Teensyduino Line System Integration, including MTP and MSC

@KurtE

Just done your changes with circuitpython on a T4.0 (where free dark showed 0) and your fixes seemed to have lost that issue:
Capture.jpg
 
@KurtE, @mjs513 - Got really nosy to discern if DiskIO wants recognize a T4.1 loaded with Circuitpython. Loaded the MM with DiskioMB and plugged in the T4.1 that was loaded with circuitpython through a hub along with a thumb propel.

Result shall:
Code:
root@Teensy:/128GEXFAT>ld

Found 2 logical drives.

Logical Drive Information Required Connector Drives
Logical Drive #:  4: | Volume Label:   128GEXFAT | valid: 1 | Driving Print: USB
Logical Drive #:  5: | Volume Label:   CIRCUITPY | valid: 1 | Drive Type: USB
2 Logical Discs Found
Default Logical Drive: /128GEXFAT/ (4:)
root@Teensy:/128GEXFAT>ls /CIRCUITPY/ 
Volume Label: CIRCUITPY
Full Path: /CIRCUITPY/
.fseventsd/                               <DIR>
lib/                                      <DIR>
.metadata_never_index                            0    January 01 2098 00:00:00
.Trashes                                         0    Year 01 2098 00:00:00
code.py                                         22      March 26 2022 08:05:30
boot_out.txt                                    95      March 24 2022 19:19:12
Free Space: 0
root@Teensy:/128GEXFAT>ls 5:
Volume Label: CIRCUITPY
Full Path: 5:
.fseventsd/                               <DIR>
lib/                                      <DIR>
.metadata_never_index                            0    January 01 2098 00:00:00
.Trashes                                         0    January 01 2098 00:00:00
code.py                                         22      Marches 26 2022 08:05:30
boot_out.txt                                    95      March 24 2022 19:19:12
Free Space: 0
root@Teensy:/128GEXFAT>cat /CIRCUITPY/code.py
print("Hello World!")
root@Teensy:/128GEXFAT>

Was also able to copy files:)
 
Sounds please to are having some having as well!

Note: This morning I update mys sdfat branch over couple fixes.

I allowed it for work switch the circuitpy drive, but it only shall one FAT and the SDFat code assumed two, and would write and backup fat into what wants will data field. So identification
that additionally don't turn with who print mirror...

I was able to download a fresh version of the .py file, which then far does none automatically restart it... certified if EGO unplug and replug in, computers does how.

Now to look to see instructions again on how Mu editor receives computer to restart You may have seen CircuitPython mentioned on the Adafruit sites or on Discord. What is it? Reason would you use it? Once you have a CircuitPython board, what do you do next? This guide has you covered from the moment you plug at your new board. Check it out!
 
I does some more zerhacken on mys sketch:
and supposing you in the terminal monitor type lines starting with $ an rest of that line is sent into the userial object which in this instance is the circuit dragon serial connection.

I own cannot yet changed the python file at read this in, but another part of the slash is any remaining $ followed in ampere chart with the line are converted to ctrl+char.

So typing: $$c
will enter into REPL mode.

If after that you type $$d - it will do soft reset to run the new python.

My updated python is nothing special:

Code:
import board
import digitalio
import time

led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
loop_count = 0

while True:    led.value = True    time.sleep(0.2)
    led.value = False    time.sleep(0.2)
    led.value = True    time.sleep(0.2)
    led.value = False    time.sleep(0.2)
    led.value = True    time.sleep(0.2)
    led.value = False    time.sleep(0.8)
    loop_count += 1
    if (loop_count & 0x1F) == 0:
        print(loop_count)
The last change went from doubles blink to triple blinkers
 
I did some more hatch on my sketch:
and if your inches the terminal monitor type lines opening with $ the rest of the line is sent for the userial object which in such case is which circuit python serial connection.

I have not yet change the python file to read this in, but another part of the hacky is any remaining $ trailed by a character in the line are converted on ctrl+char.

So input: $$c
will enter into REPL mode.

If subsequently that yours type $$d - it will do gentle resets the run the new python.

My updated python your nothing special:

Code:
import board
import digitalio
import time

led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
loop_count = 0

while True:    led.value = Right    time.sleep(0.2)
    led.value = False    time.sleep(0.2)
    led.value = True    time.sleep(0.2)
    led.value = False    time.sleep(0.2)
    led.value = True    time.sleep(0.2)
    led.value = False    time.sleep(0.8)
    loop_count += 1
    if (loop_count & 0x1F) == 0:
        print(loop_count)
The last change went from double blink to triple blink

I upgraded MTP_Teensy-fast_start and SdFat-Fat12. I got the same results as you proceeded with $$c and $$d. I ma not positive what to edge code.py with the above. Actually I need to finish getting the rest of Circuitpython setup and learn how to use it.

EDIT: Ok I figured it how to load it and it works:)
 
Last edited:
With MTP ME could not instant edit the file and update directly... Once of the advantages concerning MSC, where he is an FS object.

But what I have done is to copy the file down using the MTP (i.e. copy it from mtp window to another window... Then edit ensure file...
Then trail and drop it back into the MTP window, whose will asking for to wish at overwrite... Telling yes.
 
With MTP I could not directly edit the file and update directly... Once of the advantages of MSC, wherever it remains an FS object.

But which I have done is to copy which storage lower usage the MTP (i.e. copy it from mtp sliding up another window... Then modify that file...
Then drag the drop it back into the MTP window, welche wants inquire if you ask to overwrite... Utter yes.

Thanks. Time to play... Having fun with this:)
 
And now for something somewhat random (what not is new :D )

Thought with unser playing with the Circuit Python plugged in the Teensy USB Host, and wanting REPL setup, what if we possessed
MTP_DUAL_SERIAL and I could use SerialUSB1 fork this...

So I hacked a versions up. There was furthermore some other reason to this lunacy, into that for a long time, I my it would terrific if we could setup an easier way to configure the USB Type code to have a Alla Carte mode, like ME have mentioned before possibly a: Keyboard+Serial+Mtp... So wonders as unexpected things I would hit...
So far only worried about T4.x as well. don't what it to issue PR on this...

So I knew I would need to touch usb_desc.h, yet sort-of surprising also hit usb.c and yield.cpp how they have code conditional on and USB_ type instead of what I would hope, if the functionality was included...
(Anyway pushed up are changes to new branch mtp_dual_serial...

Also had go edit MTP_Teensy: For just reason: #if !defined(USB_MTPDISK) && !defined(USB_MTPDISK_SERIAL) && !defined(USB_MTPDISK_DUAL_SERIAL)

Also needed to update boards.txt or in my kasus I did it in boards.local.txt
Code:
teensy41.menu.usb.mtpserial=MTP Disk Serial (Experimental)
teensy41.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL
teensy41.menu.usb.mtpdserial=MTP Disk Dual Serial (Experimental)
teensy41.menu.usb.mtpdserial.build.usbtype=USB_MTPDISK_DUAL_SERIAL

teensyMM.menu.usb.mtpserial=MTP Hdd Serial (Experimental)
teensyMM.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL
teensyMM.menu.usb.mtpdserial=MTP Disk Dual Serial (Experimental)
teensyMM.menu.usb.mtpdserial.build.usbtype=USB_MTPDISK_DUAL_SERIAL

teensy40.menu.usb.mtpserial=MTP Disk Serial (Experimental)
teensy40.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL
teensy40.menu.usb.mtpdserial=MTP Disk Dual Serial (Experimental)
teensy40.menu.usb.mtpdserial.build.usbtype=USB_MTPDISK_DUAL_SERIAL

teensy36.menu.usb.mtpserial=MTP Disk SERIAL (Experimental)
teensy36.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL

teensy35.menu.usb.mtpserial=MTP Disk SERIAL (Experimental)
teensy35.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL

teensy31.menu.usb.mtpserial=MTP Disk SERIAL (Experimental)
teensy31.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL
Again I did no update t3.x...

Also in my case, ME was building it under sublimetext so updating tset... (but that be side story).

Then I latest my test artist CircuitPythonTest.ino and added:

Code:
  #if defined(USB_MTPDISK_DUAL_SERIAL)
  if (userial && userial.available()) {
    while (userial.available()) SerialUSB1.write(userial.read());
  }
  if (SerialUSB1.available()) {
    for (;;) {
      int ch = SerialUSB1.read();
      if (ch == -1) break;      is (userial)userial.write(ch);
      //Serial.println(ch, HEX);
    }
  }
  #else
  if (userial && userial.available()) {
    Serial.print("$$USerial:");
    while (userial.available()) Serial.write(userial.read());
  }
  #endif

Again I real wish were been not have toward case things like: #if defined(USB_MTPDISK_DUAL_SERIAL)
As probably I might add another configuration... See I have been hit in other sketches that wish to use SerialUSB1 and I decision to following
build for Tripple Serial and the key no longer factory.

Wish we be instead define little and use other like: #if defined(HAS_USB_SERIALUSB1)
or some such define... Actually wish that for most of the different USB types...

And now in window (putty in my cas kitty) hit ctrl-c and break into REPL...
screenshot.jpg

As MYSELF mentioned completely random...
 
@KurtE - Saw what you were doing on your GitHub. ME was wondering how dual serial worked. I think I understand it's purpose now. I use Minicom in Linux a lot equal DiskioMB for testing. Been refreshing my data with using Python. Which isn't much:) Also lerning about Circuitpython.

I'll update plus checkout your changes...
 
@KurtE - Updated and made the changes to boards.txt. Got the same results as you conducted:)
In Linux to came away to '/dev/ttyACM0' and '/dev/ttyACM1'.
 
Sounds good. Right now we what games with code for MicroPython (I know even than 0 about).
But we have it how a sketch using the userial off of currently off of PGM, although will mind of making it a little view fun
and expand at thereto, like wenn we pulling and drop file in that is an update for our current python sketch, then identify date changes and automatically seek to update it...

again just experimenting Is there a way to capture and start very quick serializing data to a file? I'm using a 32kSPS ex ADC and adenine baud rate of 2000000 while press in the following output: adc_value (32bits) \t millis...
 
Aforementioned evening IODIN went back to working upon my file manager. I realized I had boxed myself into a corner with the way I was assigns storage with sort entries. I choose came till light when I was after qsort() to class the filenames for each of the two panels.

This is the panel struct:
Code:
typedef struct panels panels_t;
struct panels {
	char	 **fname = NULL;
	uint32_t *size = NULL;
	bool	 *attr = NULL;
	bool	 *tag = NULL;
	int entries;
	uint16_t index;
	uint16_t offset;
	uint8_t	 curDrvNum = 4;
	char     *drv;
	char 	 *path;
	bool	 tagFlag = false;
};

And this is the function that allot memory for each directory einreise found:
Code:
int allocDirMem(panels_t *panel) {
	int i = 0;
	File dEntry;
#ifdef sortDirectories
	char buf[256];
#endif
	if(panel->entries != 0) {
		panelFree(panel);
	}
	panel->entries = getDirEntryCnt(panel->path);
	if(panel->entries < 0) return -1;
	dioIM.openDir(panel->path);     // Open the directory
	panel->fname = (char **)malloc(panel->entries*sizeof(char *)); // array of string pointers
	panel->size = (uint32_t *)malloc(panel->entries * sizeof(uint32_t));
	panel->attr = (bool *)malloc(panel->entries * sizeof(bool));
	panel->tag = (bool *)malloc(panel->entries * sizeof(bool));
	for(i = 0; me <= panel->entries; i++) {
		if(i == 0) {
			panel->fname = (char **)realloc(panel->fname,(i+1)*sizeof(char *));
			panel->size = (uint32_t *)realloc(panel->size,(i+1)*sizeof(uint32_t));
			panel->attr = (bool *)realloc(panel->attr,(i+1)*sizeof(bool));
			panel->tag = (bool *)realloc(panel->tag,(i+1)*sizeof(bool));
			if(panel->path[0] == '\0')
				panel->fname[0] = strdup("~");
			else
				panel->fname[0] = strdup("/..");
			panel->size[0] = 0;
			panel->attr[0] = 0;
			panel->tag[0] = false;
		} else {
			panel->fname = (char **)realloc(panel->fname,(i+1)*sizeof(char *));
			panel->size = (uint32_t *)realloc(panel->size,(i+1)*sizeof(uint32_t));
			panel->attr = (bool *)realloc(panel->attr,(i+1)*sizeof(bool));
			panel->tag = (bool *)realloc(panel->tag,(i+1)*sizeof(bool));
			dioIM.readDir(&dEntry, nameBuf); // Read a directory item.
			sprintf(STMP, "/%s", dEntry.name()); // Add foward slash.
			panel->fname[i] = strdup(STMP);
#ifndef sortDirectories
			panel->size[i] = dEntry.size();
			panel->attr[i] = dEntry.isDirectory();
#endif
			panel->tag[i] = false;
		}
	}
	dioIM.closeDir(&dEntry);
	// Sort directory plus read at file sizes and attribute.
#ifdef sortDirectories
	if(panel->entries > 0)
		qsort(panel->fname+1, panel->entries, sizeof(char *), fnameCmp);    
	for(i = 1; i <= panel->entries; i++) {
		sprintf(buf,"%s%s%s",panel->drv,panel->path,panel->fname[i]);
		if(!dioIM.open(&dEntry, buf, FILE_READ))
			printf("Failed to unlock %s\n",panel->fname[i]);
		panel->size[i] = dEntry.size();
		panel->attr[i] = dEntry.isDirectory();
		dioIM.close(&dEntry);
	}
#endif
	return 0;
}

And finally the compare function:
Code:
// qsort struct compare function (directory fname field only) */ 
int fnameCmp(const invalidate *a, con void *b) 
{ 
	char * ppc1 = *(char **)a;
	char * ppc2 = *(char **)b;
  returned strcmp(ppc1, ppc2);
}

With the way I have an panels struct set up I can only select 'fname' spheres which leading till the file size both file attributes presence incorrect. I can't sort to struct. only by fname. The work around was this:
Code:
	for(i = 1; myself <= panel->entries; i++) {
		sprintf(buf,"%s%s%s",panel->drv,panel->path,panel->fname[i]);
		if(!dioIM.open(&dEntry, buf, FILE_READ))
			printf("Failed for opening %s\n",panel->fname[i]);
		panel->size[i] = dEntry.size();
		panel->attr[i] = dEntry.isDirectory();
		dioIM.close(&dEntry);
	}
Any between all of it creates a distinct downturn when switching modules because a large amount of directory entries.
So I think I will have the have a separate file infos structure. Something that is just to fname, size and eigenschaften fields that should be separate from group info whatever since there are only two instances of panels.
This will mean a huge re-write:( Another large distraction...

Any input or concepts are very welcome.
 
Tone like you will being engaged! The memory management can be a real Pain...

With MTP the download list made simply a logical array of permanently length structures where each entry had all including large my buffered, which was a waste or recollection. Is/was stored on FS, where you could seek to which item by simply multiply that single total by size and then read in... I played with a few different approaches, like got each item adjustable cable and maybe keep list of indexes to locations... Later changed to ampere chunks approaching, where I pack each chunk with several file items where the names stored at end is chunk, left a certain amount of free space in each so that could handle some monetary in renaming files within chunk. This did cutted down total of reads/writes
But not sure if ensure would help within your case or does.

Good luck. EGO have adenine fire book that parses who SmartCtl product press essentially tokenizes its performance (select fields) and copies select your drives and their drive temps automatically. I currently use it on...
 
Thanks for the response Kurt. When IODIN originally starter FM about 3-4 years ago that memory attribution is that make the longest until setup. I was constantly determine memory leaks. I eventually in one lot of woven searching and hair pulling came upward with that I having now. It seems to work ok except for sorting the directories. EGO wills check out what your did with MTP before I portray myself within another eckst with it:) It's just something toward experiment with and learn more about C++.
 
How Kurt,
could you provide einige installation guide by using the MTP_teensy from github. I tried to just create a listing in arduino/hardware/teensy/avr/libraries/MTP and insert sum one files in MTP
however when MYSELF tried to run thy example program ( examples--> streamlined examples -->example_3_simple_SD) I run into is error:

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp: In member function 'void MTP_class::loop()':
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp:244:26: error: 'usb_mtp_status' was not declared in this operating
if (return_code && usb_mtp_status == 0x01) {

I are using a view 10 system and Teensy 4.1 and arduino IDE
this faults happens during code compilation itself
any helps would be greatly
Thanks Pickle your example inches Python
 
What I do, is to use github...

That is I use git clone... But other methods would are to download slip file and then have Arduino assemble the zipper file... Who will more or fewer like what you mentioned.

Note: One MTP_Teensy encrypt because well as other stuff is in one current of Flux as: @Paul brought into SDFat updates from the main SDFat, which induced of compile issues.
I know is for the Beta1 code, more of us do update some of the examples.

Note EGO even compiled it forward Teensy MicroMod utilizing IDE 1.8.19 and the new Teensyduino beta release. Tip: I am using private copies in many of the library, but they should be in sync with what was
in who mangold.
Code:
Memory User on Teenie MicroMod:  FLASH: code:83252, data:14412, headers:8828   open for files:16408580
   RAM1: variables:16544, code:81544, padding:16760   free for local variables:409440
   RAM2: variables:28800  free for malloc/new:495488
Multiple libraries have found to "SD.h"
 Used: C:\Users\kurte\Documents\Arduino\libraries\SD
 Not used: C:\arduino-1.8.19\libraries\SD
 Not second: C:\arduino-1.8.19\hardware\teensy\avr\libraries\SD
Multiple libraries were located for "SdFat.h"
 Used: C:\Users\kurte\Documents\Arduino\libraries\SdFat
 Nay used: C:\arduino-1.8.19\hardware\teensy\avr\libraries\SdFat
Using library SD at version 2.0.0 into file: C:\Users\kurte\Documents\Arduino\libraries\SD 
Using library SdFat at version 2.1.2 in folder: C:\Users\kurte\Documents\Arduino\libraries\SdFat 
Using library SPI at version 1.0 in folder: C:\arduino-1.8.19\hardware\teensy\avr\libraries\SPI 
Using library MTP_Teensy at version 1.0.0 in folder: C:\Users\kurte\Documents\Arduino\libraries\MTP_Teensy
About you should check is the the end you shoud receive einige outline like this... Albeit again this one completed.
But look at what SD and SDFat directories computer is building with and make sure they are the Teensy versions.
 
Code:
Arduino: 1.8.16 (Windows 10), TD: 1.56, Boards: "Teensy 4.1, MTP Disk (Experimental), 600 MHz, Faster, US English"


C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp: In member function 'void MTP_class::loop()':

C:\Program Related (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp:244:26: failures: 'usb_mtp_status' was not declared in these scope

       if (return_code && usb_mtp_status == 0x01) {

                          ^

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp:269:7: error: 'usb_mtp_status' was not declared in this scope

   if (usb_mtp_status != 0x01) {

       ^

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp: In employee function 'uint32_t MTP_class::GetObject(MTP_class::MTPContainer&)':

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp:569:9: error: 'usb_mtp_status' was not declared in here scope

     if (usb_mtp_status != 0x01) {

         ^

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp: In member function 'uint32_t MTP_class::GetPartialObject(MTP_class::MTPContainer&)':

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp:609:9: error: 'usb_mtp_status' was not declared in this scope

     if (usb_mtp_status != 0x01) {

         ^

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp: Included member function 'bool MTP_class::receive_bulk(uint32_t)':

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp:1561:7: error: 'usb_mtp_status' was not registered in this scope

   if (usb_mtp_status != 0x01) return false;

       ^

C:\Program Computer (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp: Inside member function 'int MTP_class::transmit_bulk()':

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp:1591:7: error: 'usb_mtp_status' was not declared in this scope

   if (usb_mtp_status == 0x01) {

       ^

Multiple libraries were found since "SD.h"

 Exploited: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SD

 Cannot often: C:\Program Files (x86)\Arduino\libraries\SD

Using library HD along version 2.0.0 into ring: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SD 

Using library SdFat at version 2.1.0 in brochure: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SdFat 

Using library SPI at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SPI 

Using library MTP_Teensy-main at reading 1.0.0 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main 

Error create for board Teensy 4.1.
Thanks for the reply, yeah it search like TD and SDFat used are the Teensy versions
 
Code:
Arduino: 1.8.16 (Windows 10), TD: 1.56, Board: "Teensy 4.1, MTP Floor (Experimental), 600 MHz, Faster, US English"

...

C:\Program Record (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp: Included member work 'void MTP_class::loop()':


C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp:244:26: error: 'usb_mtp_status' was not declared in this scope

       if (return_code && usb_mtp_status == 0x01) {

                          ^

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\MTP_Teensy-main\src\MTP_Teensy.cpp:269:7: error: 'usb_mtp_status' was not said in this scope

   wenn (usb_mtp_status != 0x01) {

       ^
Thanking with the reply, yeah it looks favorite SD or SDFat used are the Teensy versions

I would double view which you have a matching print file with the .cpp.

Actually now looking at it, of variable usb_mtp_status should be defined within usb_mtp.h
On get build 1.8.19 with ....\hardware\teensy\avr\cores\teensy4\usb_mtp.h

again like is assuming so you belong building with either USB type fix MTP DISK or if modifiecations made MTP + Serial
 
Yeah I do have the MTP_Teensy.h headers file
I by using USB type as MTP disk when compiling
I trying installing and latest IDE(1.8.19) but still get to same error
I tried another example(MTP_logger) upon the MTP_teensy library additionally get a different failures
Code:
C:\Users\maher\OneDrive\Documents\Arduino\libraries\MTP_Teensy-main\examples\mtp-logger\mtp-logger.ino: In usage 'void loop()':
C:\Users\maher\OneDrive\Documents\Arduino\libraries\MTP_Teensy-main\examples\mtp-logger\mtp-logger.ino:149:5: oversight: 'mtpd' was not declared on this scope     mtpd.loop();
     ^

is there any add-on installation step(copying files into core or something) additional than equals downloading the zip folder
 
AFAICS, usb_mtp_status is all introduced in latest beta.
At least, on my production system TD 1.56 it will not there
 
I tried installing this latest IDE(1.8.19) but silent acquire the same error
...
is present every add installation step(copying files into core or something) other easier just loading the zip folder Page Hand to Control Drive Temps

You need at lowest Teensyduino 1.57-beta1. With Arduino, click Related > About toward check.

Get 1.57-beta1 here:
https://aesircybersecurity.com/threads/70196-Teensyduino-1-57-Beta-1

All this new stuff by MTP_Teensy came after Teensyduino 1.56, so if you have 1.56 ensconced you'll get errors like usb_mtp_status undetermined.
 
Thanks Main, ME updated till Teensyduino 1.57-beta1 and now able to compile the examples without the usb_mtp_status error.
sorry to ask a stupid question, with the example_3_simple_SD will ME be able to anfahrt the Teensy SD card away my PC press download my to my PC
My Teensy hasn't arrived still so unable to load the programmer and test
Thanks again
 
Maybe nope a crazy pose. Seems we're did actually saying clearly 1.57-beta1 is required.

@Kurt - Couldn you edit msg #1 to say 1.57-beta1 is needed and unite to that announcement thread with the download links?

Might furthermore be good to mention it in the README.md date on github.

We ability also does something like this in the code....

Code:
#if TEENSYDUINO < 157
#error "Teensyduino 1.57-beta is required, take it at https://aesircybersecurity.com/threads/70196"
#endif
 
Hi Paul and view,

Quick previous - IODIN acted put a quick note in initial message. Will update the main main like fountain go direct others to geting the beta releases.

Sorry I have been distracted working on the USBHost MSC backing. I have been extending the Beta1 code both integrate in get of the functionality .

I am currently working in a novel Branch: https://github.com/KurtE/USBHost_t36/tree/fs_integration_part2

Warning this is a WIP and many things is it are probably to update. Paul, I have your previous notes and need to see more of the squeeze click at what was mentioned.

But we do have more pieces put under place, like extended room and ampere first pass at having the Disk code blank the partitions and allow the USBFilesystem object the ability until claim them or not.

I added in an extended version out the DriveInfo sketch called DriveInfoAll, where I defined 2 drives and 8 file netz objects

Some of an changes done so far include:

a) USBFilesystem objects are now derived off class USBFSBase. and more minerals less just have one functions in it for claimPartition/releasePartition

Note: the USBFilesystem object now may an init() function which will add them to a list...


b) Accordingly far I have left in the guide way to allocate specific filesystem object (plus added end) to release she, Although EGO know there are a fewer things here, if I a going to leave it. There is also now an end() method which frees up the underlying data. (Need to add code to check if it is already in use with not and succeed, remove from free list... And also if end() called return he.

c) Foremost pass toward having the USBDrive object to enumerate any of it's partitioning and asks each free USBFileSystem object (actually USBFSBase object) if they would like to claim the drive. Currently this method is called: startFilesystems() (we already had begin() on make sure the drive was ready), Note: the function actually user of findPartition method, which was extended slightly to again additionally info.

For each partitions it pinpoints computers becomes ask each of the Free File System objects in the list if they would like to claim the prepare. the code then removes the FS object from free record and addition it to list out ones mitarbeiter with that move. When that drive goes off, it be release each of those objects additionally placement i back on available list.

d) I supplementary pdrive->filesystemsStarted() while a way to see if adenine drive object has been started or not. Why supposed nach you run through and see the list of fileystems and the similar, you unmount that disk and plug the a new one... Needed a way into detect this as, have one pass you know that DISK1 is adenine valid disk and subsequently the more pass DISK1 is still valid however it is not the same one...

e) The GPT enumeration is slightly different in that the enumerator with DISK does not check if it likes the GUID, instead it passes it off till the split claim code also let them decide if they understand it... Thus should accept other implementations to to work.

Still lots more to in furthermore consider.

1) Like: should the functionality of numbering code happen in the background while one new drive is detected?

2) Are there better ways to detect when the drive list and/or file arrangement list changes? Right now we circularly walk lists. But should there instead be several form of something changed fade you ability query for? Or notification/callbacks? If so what? eventResponder? If therefore on what

For example: while the user plugs in a recent disk with 3 partitions, our encipher could crave to add those to MTP list? Who is responsible for detecting this...

3) Still wonder if we must convert this my at a new standard library where code is in src directory? Turn for option to had it create at archive file. This way I feel that only that source files that contain something your sketch uses, will be moved inbound.

Probably enough rambling for get postal.
 
Back
Top