@Kurt: USB_HOST (T4.1) Serial, hardware handshake

Status
Not open for further replies.
Fixed: https://github.com/PaulStoffregen/U...mits/ad2a48c3957f6cdf7974882655cf14eeff93fcaf

Avrdude works now :)

Code:
C:\Users\Frank>C:\Users\Frank\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\Frank\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -v -patmega328p -carduino -PCOM19 -b115200 -D -Uflash:w:c:\temp\arduino_build_405010/Blink.ino.hex:i

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Frank\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM19
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 4.4
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: reading input file "c:\temp\arduino_build_405010/Blink.ino.hex"
avrdude: writing flash (936 bytes):

Writing | ################################################## | 100% 0.23s

avrdude: 936 bytes of flash written
avrdude: verifying flash memory against c:\temp\arduino_build_405010/Blink.ino.hex:
avrdude: load data flash data from input file c:\temp\arduino_build_405010/Blink.ino.hex:
avrdude: input file c:\temp\arduino_build_405010/Blink.ino.hex contains 936 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.21s

avrdude: verifying ...
avrdude: 936 bytes of flash verified

avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

This was a longstanding bug, has nothing to do with your DTR addition, so I commited the PR to Pauls repository.
 
The sketch I use is attached.

It can be modified to be a subroutine that kicks in when programming is desired and do "normal" communication otherwise.
With UNO, DTR can be used to detect programming start and ready programmed (perhaps better use a timeout here.)

@Kurt: Shall we now try ESP? (would need rts..)
 

Attachments

  • usbhost_programmer.ino
    1.5 KB · Views: 63
Last edited:
Fixed: https://github.com/PaulStoffregen/U...mits/ad2a48c3957f6cdf7974882655cf14eeff93fcaf

Avrdude works now :)


This was a longstanding bug, has nothing to do with your DTR addition, so I commited the PR to Pauls repository.

Good catch :eek:, It is interesting that mostly used the Serial stuff for output...
Note: looks like we need to fix ::peek as well, as it does not increment the tail pointer for the character it is returning... Will add that on as well.

Will try out your fix and sketch :D
 
It works!

I have a mucked up version of your sketch:
Reads and writes full buffers at a time.
Has a USBHub object in case I plug it in through a hub.
Prints out information about the serial object plugged in.
And if you type any key in Serial object, it toggles debug output on and off...

Now to see what the ESP32 needs...
 

Attachments

  • usbhost_programmer.zip
    1.3 KB · Views: 44
Thank you :)

Yes, peek() needs a fix, too.
I think, we just need RTS, it will work, then.
UNO / Arvdude/ Optiboot was a good proof that USB-Host serial should work good, now.
 
Plugged in a Mega 2560 but no joy in mudville:
Code:
C:\Users\Merli>C:\Users\Merli\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\Merli\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -v -patmega2560 -cwiring -PCOM20 -b115200 -D -Uflash:w:C:\Users\Merli\AppData\Local\Temp\arduino_build_510640/Blink.pde.hex:i

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Merli\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM20
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

avrdude done.  Thank you.
Teensy Sermon
Code:
Programmer started.
 Debug output can be turned on by pressing any key
usbhost serial connected
  manufacturer: Arduino (www.arduino.cc)
  product: Arduino (www.arduino.cc)
SerialUSB1 changed BAUD from 0 to 115200
SerialUSB1 DTR change 1
Send(7): 0x1B 0x1 0x0 0x1 0xE 0x1 0x14
RCV(6): 0x0 0x1B 0x1 0x0 0xB 0xE
RCV(11): 0x1 0x0 0x8 0x41 0x56 0x52 0x49 0x53 0x50 0x5F 0x32
Send(7): 0x1B 0x2 0x0 0x1 0xE 0x1 0x17
RCV(17): 0x74 0x1B 0x2 0x0 0xB 0xE 0x1 0x0 0x8 0x41 0x56 0x52 0x49 0x53 0x50 0x5F 0x32
Send(7): 0x1B 0x3 0x0 0x1 0xE 0x1 0x16
RCV(17): 0x77 0x1B 0x3 0x0 0xB 0xE 0x1 0x0 0x8 0x41 0x56 0x52 0x49 0x53 0x50 0x5F 0x32
Send(7): 0x1B 0x4 0x0 0x1 0xE 0x1 0x11
RCV(3): 0x76 0x1B 0x4
RCV(14): 0x0 0xB 0xE 0x1 0x0 0x8 0x41 0x56 0x52 0x49 0x53 0x50 0x5F 0x32
Send(7): 0x1B 0x5 0x0 0x1 0xE 0x1 0x10
RCV(17): 0x71 0x1B 0x5 0x0 0xB 0xE 0x1 0x0 0x8 0x41 0x56 0x52 0x49 0x53 0x50 0x5F 0x32
Send(7): 0x1B 0x6 0x0 0x1 0xE 0x1 0x13
RCV(17): 0x70 0x1B 0x6 0x0 0xB 0xE 0x1 0x0 0x8 0x41 0x56 0x52 0x49 0x53 0x50 0x5F 0x32
SerialUSB1 DTR change 0

Next post a DUE
 
For the Due - looks like may changing the baud to 1200bps?
Code:
Send auto-baud
Set binary mode
No device found on COM20

Code:
Programmer started.
 Debug output can be turned on by pressing any key
usbhost serial connected
  manufacturer: Arduino (www.arduino.cc)
  product: Arduino Due Prog. Port
  Serial: 8
SerialUSB1 changed BAUD from 0 to 115200
Send(1): 0x80
Send(1): 0x80
Send(1): 0x23
Send(2): 0x4E 0x23
Send(12): 0x77 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x2C 0x34 0x23

EDIT: Ok think I broke my due.... Any probably wouldn't have worked anyway since is uses bossac and not avrdude - was just experimenting now back to Mega
 
Have you used the fix?
Can you try the non-buffered version?
Do the boards use DTR only?

:)
Frank

A couple of things.

Yes I have your fix :) nice catch

Can;t seem to find anything definitive but think yes, I think it may need RTS as well for the mega: https://forum.arduino.cc/t/does-avrdude-toggle-rts-and-dtr-for-ftdi-reset/635894/8, maybe. From what I am seeing as well the mega doesnt use the stk500v2 but wiring so something different: https://false.ekta.is/2011/05/avrdude-5-10-arduino-mega-2560-command-line-uploading/

Did find a nice reference though for avrdude :)
http://ladyada.net/learn/avr/avrdude.html
 
A couple of things.

Yes I have your fix :) nice catch

Can;t seem to find anything definitive but think yes, I think it may need RTS as well for the mega: https://forum.arduino.cc/t/does-avrdude-toggle-rts-and-dtr-for-ftdi-reset/635894/8, maybe. From what I am seeing as well the mega doesnt use the stk500v2 but wiring so something different: https://false.ekta.is/2011/05/avrdude-5-10-arduino-mega-2560-command-line-uploading/

Did find a nice reference though for avrdude :)
http://ladyada.net/learn/avr/avrdude.html

I don't have these boards :( ... no i do not buy them.. have too much of this stuff here..
 
I don't have these boards :( ... no i do not buy them.. have too much of this stuff here..

Don't blame you - rarely use them anymore since the Teensy. Have enough as well. Guess will have to see about a non arduino board :)
 
Just pushed up some changes in the USBHost code. Brought in Frank's fix, plus peek.

Also tried with CP210x board... ESP32 Micromod... It was totally hanging the Teensy... Did not properly handle the usbSerial.end() function on these... So put in some code to handle that.

Still it is not fully connecting up...
Code:
SerialUSB1 changed BAUD from 9600 to 115200
SerialUSB1 DTR change 0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
RCV(64): 0x13 0x82 0x72 0x2 0x8C 0x6C 0xF2 0x70 0x2 0x8C 0x6C 0xC 0x8C 0xC 0x24 0x6C 0xC 0x6C 0x8C 0x8C 0x8C 0x6C 0x8C 0xC 0x8E 0x8E 0xE 0x6C 0x72 0x6C 0x8C 0x72 0x82 0x62 0xC 0xC 0x72 0xC 0x4 0x23 0x6C 0x9E 0xF2 0x12 0x6C 0x13 0x72 0x92 0x90 0x92 0x6C 0x70 0x8C 0xF2 0x6E 0x6E 0xDE 0x1E 0x80 0xC 0x12 0xEC 0xC 0xC
RCV(64): 0x62 0x6C 0x80 0x12 0x6C 0x12 0x90 0x80 0x8E 0x82 0x92 0x12 0x90 0x6C 0x80 0x8E 0x2 0x6C 0x12 0x60 0x7E 0xF2 0x6C 0x92 0x6C 0x72 0x6C 0xE 0xF2 0x6E 0x6E 0x9C 0xEC 0x1E 0x72 0x12 0x6E 0x62 0xC 0xC 0xC 0x63 0xEC 0x12 0x92 0x6C 0x92 0x12 0x1F 0x80 0xC 0x92 0x92 0x92 0x60 0x2 0xE 0xC3 0x6E 0x72 0xFE 0x82 0x62 0xE2
RCV(64): 0x62 0xC 0xC 0x2 0xC 0xC 0x62 0xF0 0xFF 0x82 0x62 0xE2 0x62 0xC 0xC 0x2 0xC 0xC 0x62 0x9C 0x12 0x9C 0x7C 0x9C 0x62 0xC 0xC 0x2 0xC 0xC 0x62 0x70 0x8E 0x2 0xEC 0x12 0x9C 0x7C 0x9C 0x62 0xC 0xC 0x3 0xC 0xC 0x62 0x6F 0x9C 0x12 0x9C 0x7C 0x9C 0x62 0xC 0xC 0x2 0xC 0xC 0x63 0x9E 0xF2 0x12 0x9C 0x7C
RCV(64): 0x9C 0x62 0xC 0xC 0x2 0xC 0x24 0x60 0x2 0x72 0xF2 0x6E 0x9C 0xE2 0xEC 0xC 0x90 0x8C 0x7E 0x82 0x62 0xE4 0x82 0x6E 0x6E 0x70 0x6E 0x2 0xC 0x9C 0xEC 0x9C 0x62 0x6C 0x6C 0x60 0x2 0x70 0xF2 0x6E 0xE0 0x10 0x62 0xC 0xC 0x72 0x8C 0x9C 0x9C 0x9C 0xC 0x6C 0xC 0xC 0x62 0x6E 0xE3 0x7C 0x62 0xC 0x8E 0xE 0x6C 0x70
RCV(64): 0xF2 0x6E 0xE0 0x10 0x62 0xC 0xC 0x72 0x8C 0x9C 0x9C 0x9C 0xC 0x6C 0xEC 0x82 0x62 0x6E 0xE2 0x7C 0x62 0x6C 0x8C 0x6C 0x8C 0x8E 0xF 0x6C 0x60 0xF2 0x6E 0xC 0xC 0xC 0x9E 0xE0 0x62 0x82 0x6E 0x6C 0x8C 0xC 0x8C 0xF2 0x6E 0x6F 0xEF 0x0 0xC 0x8E 0xE 0x6C 0x70 0xF2 0x6E 0xE0 0x10 0x62 0xC 0xC 0x82 0xC 0xC 0xEC
RCV(64): 0x8E 0xC 0xC 0xC 0xC 0x63 0x27 0xE2 0x7C 0x62 0x6C 0xEC 0x8E 0x1C 0x80 0x6C 0x20 0x2 0x60 0xF2 0x6E 0xC 0xC 0xC 0x9E 0xE0 0x62 0x82 0x27 0x6C 0x8C 0xC 0x8C 0xF2 0x6E 0x6E 0xEE 0x0 0xC 0x8E 0xE 0x6C 0x70 0xF2 0x6E 0xE0 0x10 0x62 0xC 0xC 0x82 0xC 0xC 0xC 0xC 0xC 0x8E 0xC 0xC 0x22 0x6F 0xE2 0x7C 0x62
RCV(29): 0x8C 0x8E 0x1C 0xDB 0xC4 0x6C 0x60 0x2 0x12 0xE2 0x6E 0x9E 0x7C 0xE2 0x2 0xC 0xC 0x82 0xC 0xC 0xC 0xC 0x8C 0x8E 0x70 0xE0 0x6C 0x60 0x2
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
RCV(15): 0x50 0x72 0x6F 0x67 0x72 0x61 0x6D 0x20 0x73 0x74 0x61 0x72 0x74 0xD 0xA
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
RCV(64): 0x13 0x82 0x72 0x2 0x8C 0x6C 0xF2 0x70 0x2 0x8C 0x6C 0xC 0x8C 0xC 0x6C 0x6C 0xC 0x6C 0x8C 0x8C 0x8C 0x6C 0x8C 0xC 0x8E 0x8E 0xE 0x6C 0x72 0x6C 0x8C 0x3B 0x82 0x62 0xC 0xC 0x72 0xC 0xC 0x62 0x6C 0x9E 0xF2 0x13 0x6C 0x12 0x72 0x92 0x90 0x92 0x6C 0x70 0x8C 0xF2 0x6E 0x6E 0x9E 0x1E 0x80 0xC 0x12 0xEC 0xC 0xC
RCV(64): 0x62 0x6C 0x80 0x12 0x24 0x1B 0xD8 0xC0 0xC7 0xC3 0xDB 0x1B 0xD8 0x24 0x80 0x8E 0x2 0x6C 0x12 0x60 0x7E 0xF2 0x6C 0x92 0x6C 0x72 0x6C 0xE 0xF2 0x6F 0x6E 0x9C 0xEC 0x1E 0x72 0x12 0x6E 0x62 0xC 0xC 0xC 0x23 0xEC 0x12 0x92 0x6C 0x92 0x12 0x1E 0x80 0xC 0x92 0x92 0x92 0x20 0x3 0xE 0x82 0x6E 0x72 0xFE 0x82 0x62 0xE3
RCV(64): 0x62 0x4 0x4 0x3 0x4 0x4 0x23 0xF8 0xFF 0xC3 0x62 0xE2 0x62 0xC 0xC 0x2 0xC 0x4 0x63 0x9C 0x12 0x9C 0x7C 0x9C 0x62 0xC 0xC 0x2 0xC 0xC 0x62 0x70 0x8E 0x2 0xEC 0x12 0x9C 0x7C 0x9C 0x62 0x4 0xC 0x2 0xC 0xC 0x62 0x27 0x9C 0x12 0x9C 0x7C 0x9C 0x62 0xC 0xC 0x2 0xC 0xC 0x62 0x9E 0xF2 0x12 0x9C 0x7C
RCV(64): 0x9C 0x62 0xC 0xC 0x2 0xC 0x64 0x60 0x3 0x72 0xF2 0x6E 0x9C 0xE2 0xEC 0xC 0x90 0x8C 0x7E 0x82 0x62 0xEC 0x82 0x6F 0x6E 0x70 0x6E 0x2 0xC 0x9C 0xEC 0x9C 0x23 0x6C 0x6C 0x60 0x2 0x70 0xF2 0x6F 0xE0 0x10 0x23 0xC 0xC 0x72 0x8C 0x9C 0x9C 0x9C 0xC 0x6C 0xC 0xC 0x62 0x6E 0xE2 0x7C 0x62 0xC 0x8E 0x7 0x6C 0x70
RCV(64): 0xF2 0x6E 0xE0 0x10 0x63 0xC 0xC 0x72 0x8C 0x9C 0x9C 0x9C 0xC 0x6C 0xEC 0x82 0x62 0x6E 0xE2 0x7C 0x22 0x6C 0x8C 0x6C 0x8C 0x8E 0x7 0x6C 0x60 0xF2 0x6F 0xC 0xC 0xC 0x9E 0xE0 0x62 0x82 0x6E 0x6C 0xC4 0xC 0x8C 0xF2 0x6E 0x6E 0xEE 0x0 0xC 0x8E 0xE 0x6C 0x70 0xF3 0x6E 0xE0 0x10 0x62 0x4 0xC 0x82 0xC 0xC 0xEC
RCV(64): 0x8E 0xC 0xC 0xC 0xC 0x62 0x6E 0xE2 0x3C 0x62 0x6C 0xEC 0x8E 0x1C 0x80 0x6C 0x60 0x2 0x60 0xF2 0x6E 0xC 0xC 0xC 0x9E 0xE0 0x62 0x82 0x6F 0x6C 0x8C 0xC 0x8C 0xF2 0x6E 0x6E 0xEE 0x0 0xC 0x8E 0x7 0x6C 0x70 0xF2 0x6E 0xE0 0x10 0x62 0xC 0x4 0x82 0xC 0xC 0xC 0xC 0xC 0x8E 0xC 0xC 0x63 0x6E 0xE2 0x7C 0x62
RCV(29): 0x8C 0x8E 0x1C 0x93 0x84 0x6C 0x20 0x2 0x12 0xE2 0x6F 0x9F 0x7C 0xE2 0x2 0xC 0xC 0x82 0xC 0xC 0x4 0xC 0x8C 0x8E 0x38 0xE0 0x6C 0x60 0x2
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
RCV(15): 0x50 0x72 0x6F 0x67 0x72 0x61 0x6D 0x20 0x73 0x74 0x61 0x72 0x74 0xD 0xA
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
SerialUSB1 DTR change 1
SerialUSB1 DTR change 0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0
Send(46): 0xC0 0x0 0x8 0x24 0x0 0x0 0x0 0x0 0x0 0x7 0x7 0x12 0x20 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xC0

Code:
C:\\Users\\kurte\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-80-g6c4433a-5.2.0/bin/xtensa-esp32-elf-size" -A "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_582690/bar.ino.elf"
Sketch uses 213209 bytes (16%) of program storage space. Maximum is 1310720 bytes.
Global variables use 15372 bytes (4%) of dynamic memory, leaving 312308 bytes for local variables. Maximum is 327680 bytes.
C:\Users\kurte\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\2.6.1/esptool.exe --chip esp32 --port COM27 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 C:\Users\kurte\AppData\Local\Arduino15\packages\SparkFun\hardware\esp32\1.0.0/tools/partitions/boot_app0.bin 0x1000 C:\Users\kurte\AppData\Local\Arduino15\packages\SparkFun\hardware\esp32\1.0.0/tools/sdk/bin/bootloader_qio_80m.bin 0x10000 C:\Users\kurte\AppData\Local\Temp\arduino_build_582690/bar.ino.bin 0x8000 C:\Users\kurte\AppData\Local\Temp\arduino_build_582690/bar.ino.partitions.bin 
esptool.py v2.6
Serial port COM27
Connecting........_____....._____....._____....._____....._____....._____....._____

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
 
Note everywhere you see DTR change it is doing both DTR and RTS...

I geared it after the CP210 Linux driver which:
Code:
static void cp210x_dtr_rts(struct usb_serial_port *p, int on)
{
	if (on)
		cp210x_tiocmset_port(p, TIOCM_DTR|TIOCM_RTS, 0);
	else
		cp210x_tiocmset_port(p, 0, TIOCM_DTR|TIOCM_RTS);
}
Sets both and clears both...

Update: It was able to program an older Arduino Mega 1280 board I have.

As for the Leonardo... It may have wiped it out... Now it is causing the Teensy program to die... I think I need to add the crash code!
 
Note everywhere you see DTR change it is doing both DTR and RTS...

I geared it after the CP210 Linux driver which:
Code:
static void cp210x_dtr_rts(struct usb_serial_port *p, int on)
{
	if (on)
		cp210x_tiocmset_port(p, TIOCM_DTR|TIOCM_RTS, 0);
	else
		cp210x_tiocmset_port(p, 0, TIOCM_DTR|TIOCM_RTS);
}
Sets both and clears both...

Update: It was able to program an older Arduino Mega 1280 board I have.

As for the Leonardo... It may have wiped it out... Now it is causing the Teensy program to die... I think I need to add the crash code!

Just tried it on the Mega2560 I was testing with earlier and it worked - slow but it worked:
Code:
avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Merli\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM20
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega2560
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    10     8    0 no       4096    8      0  9000  9000 0x00 0x00
           flash         65    10   256    0 yes    262144  256   1024  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Wiring
         Description     : Wiring
         Programmer Model: AVRISP
         Hardware Version: 15
         Firmware Version Master : 2.10
         Vtarget         : 0.0 V
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D8
avrdude: safemode: efuse reads as FF
avrdude: reading input file "C:\Users\Merli\AppData\Local\Temp\arduino_build_436201/Blink.pde.hex"
avrdude: writing flash (1536 bytes):

Writing |                                                    | 0% 0.00savrdude: stk500v2_ReceiveMessage(): timeout
Writing | ########                                           | 16% 5.02savrdude: stk500v2_ReceiveMessage(): timeout
Writing | #################                                  | 33% 10.05savrdude: stk500v2_ReceiveMessage(): timeout
Writing | #########################                          | 50% 15.07savrdude: stk500v2_ReceiveMessage(): timeout
Writing | #################################                  | 66% 20.10savrdude: stk500v2_ReceiveMessage(): timeout
Writing | ##########################################         | 83% 25.12savrdude: stk500v2_ReceiveMessage(): timeout
Writing | ################################################## | 100% 30.15s

avrdude: 1536 bytes of flash written
avrdude: verifying flash memory against C:\Users\Merli\AppData\Local\Temp\arduino_build_436201/Blink.pde.hex:
avrdude: load data flash data from input file C:\Users\Merli\AppData\Local\Temp\arduino_build_436201/Blink.pde.hex:
avrdude: input file C:\Users\Merli\AppData\Local\Temp\arduino_build_436201/Blink.pde.hex contains 1536 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.21s

avrdude: verifying ...
avrdude: 1536 bytes of flash verified

avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D8
avrdude: safemode: efuse reads as FF
avrdude: safemode: Fuses OK (E:FF, H:D8, L:FF)

avrdude done.  Thank you.

QUESTION: How did you try to load to the ESP32?
 
Kurt, RTS & CTS are different:

2021-07-13 21_36_05-nodemcu-32s_product_specification.pdf.png
See linked PDF (Post #1 ;) )
It needs all 4 possible states.. DTR 0 RTS 0 , DTR 1 RTS 0 , DTR 0 RTS 1, DTR 1 RTS 1
 
Just tried the Due again but still no luck. But at least the Mega is working.
Code:
C:\Users\Merli>C:\Users\Merli\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.6.1-arduino/bossac.exe -i -d --port=COM20 -U false -e -w -v -b C:\Users\Merli\AppData\Local\Temp\arduino_build_436201/Blink.pde.bin -R
Send auto-baud
Set binary mode
No device found on COM20
Funny that it can not find the device must be something with the way bossac works

EDIT: Not sure you are going to get there, i.e., supporting the due. Bossac is going to be looking for a SAM chip.
http://www.shumatech.com/web/products/bossa

and looks like you have to do an erase of the Due first:
Either of the USB ports can be used for programming the board, though it is recommended to use the Programming port due to the way the erasing of the chip is handled :
  • Programming port: To use this port, select "Arduino Due (ProgrammingPort)" as your board in the Arduino IDE. Connect the Due's programming port (the one closest to the DC power jack) to your computer. The programming port uses the 16U2 as a USB-to-serial chip connected to the first UART of the SAM3X (RX0 and TX0). The 16U2 has two pins connected to the Reset and Erase pins of the SAM3X. Opening and closing the Programming port connected at 1200bps triggers a “hard erase” procedure of the SAM3X chip, activating the Erase and Reset pins on the SAM3X before communicating with the UART. This is the recommended port for programming the Due. It is more reliable than the "soft erase" that occurs on the Native port, and it should work even if the main MCU has crashed.
  • Native port: To use this port, select "Arduino Due (NativeUSBPort)" as your board in the Arduino IDE. The Native USB port is connected directly to the SAM3X. Connect the Due's Native USB port (the one closest to the reset button) to your computer. Opening and closing the Native port at 1200bps triggers a 'soft erase' procedure: the flash memory is erased and the board is restarted with the bootloader. If the MCU crashed for some reason it is likely that the soft erase procedure won't work as this procedure happens entirely in software on the SAM3X. Opening and closing the native port at a different baudrate will not reset the SAM3X.
Unlike other Arduino boards which use avrdude for uploading, the Due relies on bossac.The ATmega16U2 firmware source code is available in the Arduino repository. You can use the ISP header with an external programmer (overwriting the DFU bootloader). See this user-contributed tutorial for more information.
 
Last edited:
@frankB - Yep I understand RTS is different than CTS... Question is how do they do this over USB... More on this in a bit.

As for Leonardo... I think it was left in a state of NOT happy... So when I plug it back in, it keeps rebooting the T4.1...
Put in Crashreport...
Code:
CrashReport:
  A problem occurred at (system time) 11:4:59
  Code was executing from address 0x4BC
  CFSR: 82
	(DACCVIOL) Data Access Violation
	(MMARVALID) Accessed Address: 0x9 (nullptr)
	  Check code at 0x4BC - very likely a bug!
	  Run "addr2line -e mysketch.ino.elf 0x4BC" for filename & line number.
  Temperature inside the chip was 46.54 °C
  Startup CPU clock speed is 600MHz
Programmer started.
 Debug output can be turned on by pressing any key
*** debug on ***

Code:
C:\Users\kurte\AppData\Local\Temp\arduino_build_usbhost_programmer.ino>addr2line -e usbhost_programmer.ino.elf 0x4d0
C:\Users\kurte\Documents\Arduino\libraries\USBHost_t36/ehci.cpp:799 (discriminator 1)

So faulting in:
Code:
bool USBHost::queue_Transfer(Pipe_t *pipe, Transfer_t *transfer)
{
	// find halt qTD
	Transfer_t *halt = (Transfer_t *)(pipe->qh.next);
	[COLOR="#FF0000"]while (!(halt->qtd.token & 0x40)) halt = (Transfer_t *)(halt->qtd.next);[/COLOR]
	// transfer's token
So need to turn on debug...
 
@KurtE
Not going to be able to test a Leonardo as I don't have one sorry. I ran into a similar problem with the due - reinstalled the board drivers from Arduino and reloaded the sketch to the Leonardo - that seemed to clear the issue. Maybe just reloading a sketch the leonardo will help - you probably tried this one already.
 
@KurtE
Not going to be able to test a Leonardo as I don't have one sorry. I ran into a similar problem with the due - reinstalled the board drivers from Arduino and reloaded the sketch to the Leonardo - that seemed to clear the issue. Maybe just reloading a sketch the leonardo will help - you probably tried this one already.

Yes was able to program Leonardo directly... Issue at connection telling it to have DTR... Not processed... Commented out that setting, which keeps us from crashing. But still not programming.

It was interesting that trying to program the Leonardo it know something about Serial26 and 27... Which I am trying 27 SerialUSB1...
 
Arduino(or was it platformio? - too late for me) finds the right COM Port, too - it's magic. No.. i guess it parses the USB names or PIDs.. some day i'll add the right PIDs to the .ino. Thanks to the forum, I learned a few days ago that this is possible.
Then, there are boards that use USB directly (no serial emulation?),I've seen that in the AvrDude sourcecode, but did not dig deeper since it was not interesting.

Kurt: Is there any chance I can reproduce the crash you're seeing?

From what you're describing, the crash looks somewhat similar to the weird effect in the main USB-Serial i fixed together with Paul a few days ago.
The problem was that the timer triggered a transfer at a time when the main code modified values.. we had to set flags to stop this. Perhaps you've followed the thread @ github.

So now back to Ice+Coke+Bacardi ;)
 
Right now, I have the crash not crashing...

I hacked the claim code for the CDCACM mode that at the end it was always turned on the DTR...

So turned that off:
Code:
		// Wish I could just call Control to do the output... Maybe can defer until the user calls begin()
		// control requires that device is setup which is not until this call completes...
#if 0
		println("Control - CDCACM DTR...");
		// Need to setup  the data the line coding data
		mk_setup(setup, 0x21, 0x22, 3, 0, 0);
		queue_Control_Transfer(dev, &setup, NULL, this);
		control_queued = true;
		pending_control = 0x0;	// Maybe don't need to do...
#else
		control_queued = false;
		pending_control = 0x0;	// Maybe don't need to do...
#endif		
		return true;
	}
And not crashing... But not sure what else that might impact.
 
Still WIP - I pushed up current changes to USBHost branch...
Also my current updated sketch:
Where I now have split the DTR and RTS functions.
Code:
  if (usbserial_active) {
    dtr = SerialUSB1.dtr();
    rts = SerialUSB1.rts();
    baud = SerialUSB1.baud();
    digitalWriteFast(LED_BUILTIN, dtr);
    if (dtr != lastDtr) {
      if (debug_output) Serial.printf("SerialUSB1 DTR change %u\n", dtr);
      usbserial.setDTR( dtr );
      lastDtr = dtr;
    }
    if (rts != lastRts) {
      if (debug_output) Serial.printf("SerialUSB1 RTS change %u\n", rts);
      usbserial.setRTS( rts );
      lastRts = rts;
    }
I have not updated all of the USB Serial types yet, but did update the one ESP32 uses and FTDI... CDCACM, I think I need to locally hold state values...

Anyway, some of the time having success with ESP32:
Code:
C:\Users\kurte\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\2.6.1/esptool.exe --chip esp32 --port COM27 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 C:\Users\kurte\AppData\Local\Arduino15\packages\SparkFun\hardware\esp32\1.0.0/tools/partitions/boot_app0.bin 0x1000 C:\Users\kurte\AppData\Local\Arduino15\packages\SparkFun\hardware\esp32\1.0.0/tools/sdk/bin/bootloader_qio_80m.bin 0x10000 C:\Users\kurte\AppData\Local\Temp\arduino_build_582690/bar.ino.bin 0x8000 C:\Users\kurte\AppData\Local\Temp\arduino_build_582690/bar.ino.partitions.bin 
esptool.py v2.6
Serial port COM27
Connecting........_____....._____....._____.....__
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: 24:6f:28:8f:5b:18
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 16MB
Compressed 8192 bytes to 47...
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 5957.9 kbit/s)...
Hash of data verified.
Flash params set to 0x024f
Compressed 17392 bytes to 11186...
Wrote 17392 bytes (11186 compressed) at 0x00001000 in 0.1 seconds (effective 1038.3 kbit/s)...
Hash of data verified.
Compressed 213328 bytes to 108774...
Wrote 213328 bytes (108774 compressed) at 0x00010000 in 1.7 seconds (effective 976.9 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 2234.2 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
Although I don't think it is resetting properly... But if I unplug and plug it back in, it does show a different blink (I changed blink length)...

Note CDCACM is in the unknown state...

Update: Pushed up more changes to DTR... remember state of what I have sent so know when each one changes...
Tested on UNO and Mega
 

Attachments

  • usbhost_programmer.zip
    1.4 KB · Views: 46
Last edited:
Good morning!
Wow, a lot happened while I was sleeping.
I probably won't be able to try this out until tonight.
If this works (almost) now, you could even write a tool for the Teensy that reads and programs a hex file from the SD card/littlfs or similar. Avrdude or an ESP tool on the Teensy.... I'm just not sure if you really need something like that. ;)

In any case, it makes development much easier. No more plugging and unplugging... and the working programmers show that usbhost-serial works pretty good.
Thanks!
 
Status
Not open for further replies.
Back
Top