MTP Responder Contribution

Been trying to get this working on Linux all day. Getting fed up now.

By fiddling with the udev rules, nautilus now displays 'Teensy MTP Disk' but is unable to access it ("no MTP devices found").

What Teensy you are using?
If T3, you can activate Serial1 and get some log of packets. (uncomment Serial1.begin)
I do not use Linux myself, but I seen it running on Ubuntu/Nautilus.
 
If T3, you can activate Serial1 and get some log of packets. (uncomment Serial1.begin)

Teensy 4, ide 1.8.10, teensyduino 1.49. The pc is running ubuntu 18.04. Unfortunately, Serial doesn't work in mtp experimental mode. Is there another way to get the logs?

In an earlier post you said to use a card formatted for exfat. Does that still hold?

I thought the problem might be old SPI and Time libs, but updating those didn't help. Tomorrow I'll try updating the rest.
 
What SD connect is there on T4? Not SDIO? I didn't get today's update yet but yesterday it was coded to use standard SPI SD.

Serial1 is uart on pins 0/1 - would feed to a USB adapter or a second Teensy to echo out USB.

Cool that debug info is there - could also be sent out Serial USB as seen on Windows showing the 'loop' printing while MTP active.
 
Sdio via the pads underneath. # define use_sdio is set to 1.

Will investigate serial1 tomorrow.

Good - assume SDIO has been seen to work? I tested mine back a few p#119? when it failed with the sdfat-Beta diskinfo sketch.

Downloaded Now 6 hr old update MTP:: made the MTP_config.h edit " #define USE_SDIO 1
"
>> Had to "#ifdef 0" out code of either MAIN.cpp or mtp-test.ino - both define storage and setup and loop and both are included by IDE builder since they are same directory. A bit awkward - maybe do "#ifdef USING_MAKEFILE" in the .cpp and then edit makefile to define that? That would preclude the IDE from finding anything there, but work for makefile that ignores the .ino. I was okay with empty .INO - it is just an example and the IDE shows the tab which is a good lesson for IDE users to learn.

>> It is running now and a RIGHT click Drag and release 'Copy' of a file on the MTP::Teensy, the Windows UI showed copy underway - then quit. And the MTP::Teensy was then no longer viable.
- unplugged and re-plugged Teeny and it came up showing zero size 'COPY' name of that file with size of zero not 190 MB

>> Delete of that empty 'Copy' file works as does delete of the 'New Folder 2' created yesterday.

Here is a snapshot of T4 memory usage in building this sample with TD_1.49:
Code:
FlexRAM section ITCM+DTCM = 512 KB
    Config : aaaaaaaf
    ITCM :  43936 B	(67.04% of   64 KB)
    DTCM :  29376 B	( 6.40% of  448 KB)
    Available for Stack: 429376
OCRAM: 512KB
    DMAMEM:   1120 B	( 0.21% of  512 KB)
    Available for Heap: 523168 B	(99.79% of  512 KB)
Flash:  53488 B	( 2.63% of 1984 KB)
 
For what it is worth, I booted up my old desktop into Ubuntu 18.04.3 LTS .

I then plugged in my Teensy with the MTP stuff on it and it showed up as an Icon on my desktop (Teensy MTP Disk) which I double clicked on and it showed me the files...

Note: before this I did do: sudo apt-get install mtp-tools

doing a command like: dmesg | tail -30
shows lots of stuff like it installed... and mentiones Teensyduino MTP disk on ...

Not sure yet how to address from command line.
 
Yes the sdfat-beta examples all work. I have to keep renaming sdfat-beta.h > sdfat.h to do it though.

I don't mind the empty tab in mtp-test.
 
>KurtE Thanks I'll give it a go. I have tried various mtp software on the ubuntu side which makes me think my problem might be old teensy libs.

When updating ide and teensyduino, are the included libs the most recent?
 
Yes the sdfat-beta examples all work. I have to keep renaming sdfat-beta.h > sdfat.h to do it though.

I don't mind the empty tab in mtp-test.

For me it doesn't cause trouble having the 'sdfat-beta.h > sdfat.h ' file copied instead of renamed to build both.

Nice that KurtE sees it working.

@KurtE - I'm not sure about command line use either - that is when I found that linked MTPdrive App that presents it as a drive letter. That is the ONLY useful link I found on a brief search.

Some links resolved to Android in the years old version '4' - that was when they typically appeared as MTP.
 
I found a link on Ask Ubuntu, which I will fill in, Will edit post from PC...

But the data on my linux showed up like:
Code:
kurt@kurt-XPS-8300:~$ 
kurt@kurt-XPS-8300:~$ 
kurt@kurt-XPS-8300:~$ cd /run/user/$UID/gvfs
kurt@kurt-XPS-8300:/run/user/1000/gvfs$ ls
'gphoto2:host=%5Busb%3A001%2C005%5D'
kurt@kurt-XPS-8300:/run/user/1000/gvfs$ cd gphoto2\:host\=%5Busb%3A001%2C005%5D/
kurt@kurt-XPS-8300:/run/user/1000/gvfs/gphoto2:host=%5Busb%3A001%2C005%5D$ ls
 C64   mtpindex.dat  'System Volume Information'
kurt@kurt-XPS-8300:/run/user/1000/gvfs/gphoto2:host=%5Busb%3A001%2C005%5D$

Edit: one location I found some data:
https://askubuntu.com/questions/342319/where-are-mtp-mounted-devices-located-in-the-filesystem
 
I only installed SdFat beta ver 2.0.0 library and maybe I'm cheating but this is all I did in MTP_config.h
Code:
    #if USE_SDFAT_BETA == 1
    //#include "SdFat-beta.h"
    #include "SdFat.h"
    #else
    #include "SdFat.h"
    #endif
:D
 
Perhaps we should do something like this for detecting the library version ?
Code:
#if defined(SdFat_h)
    char *SDFAT_ver = SD_FAT_VERSION;
    if (!strcmp("2.0.0", SDFAT_ver)) { // ver 2.0.0
      Serial.print( "SdFat version "), Serial.println( SD_FAT_VERSION );
    } else if ((SDFAT_ver[0] == '2') && (SDFAT_ver[1] == '.')) { // ver 2.
      Serial.println("Warning: MTP Library was only tested on SdFat Version 2.0.0 beta");
      Serial.print("SdFat Version currently installed "), Serial.println( SD_FAT_VERSION );
    } else { // ver 1
      Serial.print("Wrong SdFat Version "), Serial.println( SD_FAT_VERSION );
    }
#endif

EDIT:
Issue is I'm getting compile warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] #define SD_FAT_VERSION "2.0.0"
 
Last edited:
Arduino-1.8.10
Teensyduino 1.49
So I've been playing around some more with Native Serial support (COMx port), can anyone test this:

For Teensy 4.0 ADD or EDIT ---\cores\teensy4 usb_desc.h, for Teensy LC or (3.0, 3.1, 3.2, 3.5, 3.6) ADD or EDIT ---\cores\teensy3 usb_desc.h
Code:
#elif defined(USB_MTPDISK_SERIAL) // \cores\teensy4 usb_desc.h
  #define VENDOR_ID		        0x16C0
  #define PRODUCT_ID		0x0476
  #define RAWHID_USAGE_PAGE	0xFFAB  // recommended: 0xFF00 to 0xFFFF
  #define RAWHID_USAGE		0x0200  // recommended: 0x0100 to 0xFFFF
  #define DEVICE_CLASS		0xEF
  #define DEVICE_SUBCLASS	0x02
  #define DEVICE_PROTOCOL	0x01
  #define MANUFACTURER_NAME	{'T','e','e','n','s','y','d','u','i','n','o'}
  #define MANUFACTURER_NAME_LEN	11
  #define PRODUCT_NAME		{'T','e','e','n','s','y',' ','M','T','P',' ','D','i','s','k','/','S','e','r','i','a','l'}
  #define PRODUCT_NAME_LEN	    22
  #define EP0_SIZE		        64
  #define NUM_ENDPOINTS         7  
  #define NUM_USB_BUFFERS	    12 
  #define NUM_INTERFACE		    3  
  #define CDC_IAD_DESCRIPTOR	1
  #define CDC_STATUS_INTERFACE	0
  #define CDC_DATA_INTERFACE	1 // Native Serial port
  #define CDC_ACM_ENDPOINT	    2
  #define CDC_RX_ENDPOINT       3
  #define CDC_TX_ENDPOINT       4 
  #define CDC_ACM_SIZE          16
  #define CDC_RX_SIZE_480       512
  #define CDC_TX_SIZE_480       512
  #define CDC_RX_SIZE_12        64
  #define CDC_TX_SIZE_12        64
  #define MTP_INTERFACE         2 // MTP Disk
  #define MTP_TX_ENDPOINT       5
  #define MTP_RX_ENDPOINT       5
  #define MTP_EVENT_ENDPOINT    6
  #define MTP_TX_SIZE_480       512
  #define MTP_RX_SIZE_480       512
  #define MTP_TX_SIZE_12        64
  #define MTP_RX_SIZE_12        64
  #define MTP_EVENT_SIZE        16
  #define MTP_EVENT_INTERVAL    1
  #define ENDPOINT2_CONFIG	ENDPOINT_RECEIVE_UNUSED + ENDPOINT_TRANSMIT_INTERRUPT    // Native Serial port
  #define ENDPOINT3_CONFIG	ENDPOINT_RECEIVE_BULK + ENDPOINT_TRANSMIT_UNUSED         // Native Serial port
  #define ENDPOINT4_CONFIG	ENDPOINT_RECEIVE_UNUSED + ENDPOINT_TRANSMIT_BULK         // Native Serial port
  #define ENDPOINT5_CONFIG	ENDPOINT_RECEIVE_BULK + ENDPOINT_TRANSMIT_BULK           // MTP Disk
  #define ENDPOINT6_CONFIG	ENDPOINT_RECEIVE_INTERRUPT + ENDPOINT_TRANSMIT_INTERRUPT // MTP Disk
seems to be ok no issues uploading code to Teensy 4.0 or Serial lag.

For Teensy LC, 3.x or 4.0 MTP + Serial Menu in Arduino (IDE) tools; edit boards.txt.
My changes are marked in red

Code:
menu.usb=USB Type
menu.speed=CPU Speed
menu.opt=Optimize
menu.keys=Keyboard Layout

teensy40.name=Teensy 4.0
teensy40.upload.maximum_size=2031616
teensy40.upload.maximum_data_size=524288
#teensy40.upload.maximum_data_size=1048576
teensy40.upload.tool=teensyloader
teensy40.upload.protocol=halfkay
teensy40.build.board=TEENSY40
teensy40.build.core=teensy4
teensy40.build.mcu=imxrt1062
teensy40.build.warn_data_percentage=99
teensy40.build.toolchain=arm/bin/
teensy40.build.command.gcc=arm-none-eabi-gcc
teensy40.build.command.g++=arm-none-eabi-g++
teensy40.build.command.ar=arm-none-eabi-gcc-ar
teensy40.build.command.objcopy=arm-none-eabi-objcopy
teensy40.build.command.objdump=arm-none-eabi-objdump
teensy40.build.command.linker=arm-none-eabi-gcc
teensy40.build.command.size=arm-none-eabi-size
teensy40.build.flags.common=-g -Wall -ffunction-sections -fdata-sections -nostdlib
teensy40.build.flags.dep=-MMD
teensy40.build.flags.optimize=-Os
teensy40.build.flags.cpu=-mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16
teensy40.build.flags.defs=-D__IMXRT1062__ -DTEENSYDUINO=149
teensy40.build.flags.cpp=-std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing
teensy40.build.flags.c=
teensy40.build.flags.S=-x assembler-with-cpp
teensy40.build.flags.ld=-Wl,--gc-sections,--relax "-T{build.core.path}/imxrt1062.ld"
teensy40.build.flags.libs=-larm_cortexM7lfsp_math -lm -lstdc++
teensy40.serial.restart_cmd=false
teensy40.menu.usb.serial=Serial
teensy40.menu.usb.serial.build.usbtype=USB_SERIAL
teensy40.menu.usb.keyboard=Keyboard
teensy40.menu.usb.keyboard.build.usbtype=USB_KEYBOARDONLY
teensy40.menu.usb.keyboard.fake_serial=teensy_gateway
teensy40.menu.usb.touch=Keyboard + Touch Screen
teensy40.menu.usb.touch.build.usbtype=USB_TOUCHSCREEN
teensy40.menu.usb.touch.fake_serial=teensy_gateway
teensy40.menu.usb.hidtouch=Keyboard + Mouse + Touch Screen
teensy40.menu.usb.hidtouch.build.usbtype=USB_HID_TOUCHSCREEN
teensy40.menu.usb.hidtouch.fake_serial=teensy_gateway
teensy40.menu.usb.hid=Keyboard + Mouse + Joystick
teensy40.menu.usb.hid.build.usbtype=USB_HID
teensy40.menu.usb.hid.fake_serial=teensy_gateway
teensy40.menu.usb.serialhid=Serial + Keyboard + Mouse + Joystick
teensy40.menu.usb.serialhid.build.usbtype=USB_SERIAL_HID
teensy40.menu.usb.midi=MIDI
teensy40.menu.usb.midi.build.usbtype=USB_MIDI
teensy40.menu.usb.midi.fake_serial=teensy_gateway
teensy40.menu.usb.midi4=MIDIx4
teensy40.menu.usb.midi4.build.usbtype=USB_MIDI4
teensy40.menu.usb.midi4.fake_serial=teensy_gateway
teensy40.menu.usb.midi16=MIDIx16
teensy40.menu.usb.midi16.build.usbtype=USB_MIDI16
teensy40.menu.usb.midi16.fake_serial=teensy_gateway
teensy40.menu.usb.serialmidi=Serial + MIDI
teensy40.menu.usb.serialmidi.build.usbtype=USB_MIDI_SERIAL
teensy40.menu.usb.serialmidi4=Serial + MIDIx4
teensy40.menu.usb.serialmidi4.build.usbtype=USB_MIDI4_SERIAL
teensy40.menu.usb.serialmidi16=Serial + MIDIx16
teensy40.menu.usb.serialmidi16.build.usbtype=USB_MIDI16_SERIAL
#teensy40.menu.usb.audio=Audio
#teensy40.menu.usb.audio.build.usbtype=USB_AUDIO
#teensy40.menu.usb.audio.fake_serial=teensy_gateway
#teensy40.menu.usb.serialmidiaudio=Serial + MIDI + Audio
#teensy40.menu.usb.serialmidiaudio.build.usbtype=USB_MIDI_AUDIO_SERIAL
#teensy40.menu.usb.serialmidi16audio=Serial + MIDIx16 + Audio
#teensy40.menu.usb.serialmidi16audio.build.usbtype=USB_MIDI16_AUDIO_SERIAL

teensy40.menu.usb.mtp=MTP Disk (Experimental)
teensy40.menu.usb.mtp.build.usbtype=USB_MTPDISK
teensy40.menu.usb.mtp.fake_serial=teensy_gateway
[COLOR="#FF0000"]# TEENSY 4.0 MTP + Serial
teensy40.menu.usb.mtpserial=MTP Disk (Experimental) + Serial
teensy40.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL[/COLOR]

teensy40.menu.usb.rawhid=Raw HID
teensy40.menu.usb.rawhid.build.usbtype=USB_RAWHID
teensy40.menu.usb.rawhid.fake_serial=teensy_gateway
#teensy40.menu.usb.flightsim=Flight Sim Controls
#teensy40.menu.usb.flightsim.build.usbtype=USB_FLIGHTSIM
#teensy40.menu.usb.flightsim.fake_serial=teensy_gateway
#teensy40.menu.usb.flightsimjoystick=Flight Sim Controls + Joystick
#teensy40.menu.usb.flightsimjoystick.build.usbtype=USB_FLIGHTSIM_JOYSTICK
#teensy40.menu.usb.flightsimjoystick.fake_serial=teensy_gateway
#teensy40.menu.usb.disable=No USB
#teensy40.menu.usb.disable.build.usbtype=USB_DISABLED

teensy40.menu.speed.600=600 MHz
teensy40.menu.speed.528=528 MHz
teensy40.menu.speed.450=450 MHz
teensy40.menu.speed.396=396 MHz
teensy40.menu.speed.150=150 MHz
teensy40.menu.speed.24=24 MHz
teensy40.menu.speed.720=720 MHz (overclock)
teensy40.menu.speed.816=816 MHz (overclock)
teensy40.menu.speed.912=912 MHz (overclock, cooling req'd)
teensy40.menu.speed.960=960 MHz (overclock, cooling req'd)
teensy40.menu.speed.1008=1.008 GHz (overclock, cooling req'd)
teensy40.menu.speed.1008.build.fcpu=1000000000
teensy40.menu.speed.960.build.fcpu=960000000
teensy40.menu.speed.912.build.fcpu=912000000
teensy40.menu.speed.816.build.fcpu=816000000
teensy40.menu.speed.720.build.fcpu=720000000
teensy40.menu.speed.600.build.fcpu=600000000
teensy40.menu.speed.528.build.fcpu=528000000
teensy40.menu.speed.450.build.fcpu=450000000
teensy40.menu.speed.396.build.fcpu=396000000
teensy40.menu.speed.150.build.fcpu=150000000
teensy40.menu.speed.24.build.fcpu=24000000

teensy40.menu.opt.o2std=Faster
teensy40.menu.opt.o2std.build.flags.optimize=-O2
teensy40.menu.opt.o2std.build.flags.ldspecs=
#teensy40.menu.opt.o2lto=Faster with LTO
#teensy40.menu.opt.o2lto.build.flags.optimize=-O2 -flto -fno-fat-lto-objects
#teensy40.menu.opt.o2lto.build.flags.ldspecs=-fuse-linker-plugin
teensy40.menu.opt.o1std=Fast
teensy40.menu.opt.o1std.build.flags.optimize=-O1
teensy40.menu.opt.o1std.build.flags.ldspecs=
#teensy40.menu.opt.o1lto=Fast with LTO
#teensy40.menu.opt.o1lto.build.flags.optimize=-O1 -flto -fno-fat-lto-objects
#teensy40.menu.opt.o1lto.build.flags.ldspecs=-fuse-linker-plugin
teensy40.menu.opt.o3std=Fastest
teensy40.menu.opt.o3std.build.flags.optimize=-O3
teensy40.menu.opt.o3std.build.flags.ldspecs=
#teensy40.menu.opt.o3purestd=Fastest + pure-code
#teensy40.menu.opt.o3purestd.build.flags.optimize=-O3 -mpure-code -D__PURE_CODE__
#teensy40.menu.opt.o3purestd.build.flags.ldspecs=
#teensy40.menu.opt.o3lto=Fastest with LTO
#teensy40.menu.opt.o3lto.build.flags.optimize=-O3 -flto -fno-fat-lto-objects
#teensy40.menu.opt.o3lto.build.flags.ldspecs=-fuse-linker-plugin
#teensy40.menu.opt.o3purelto=Fastest + pure-code with LTO
#teensy40.menu.opt.o3purelto.build.flags.optimize=-O3 -mpure-code -D__PURE_CODE__ -flto -fno-fat-lto-objects
#teensy40.menu.opt.o3purelto.build.flags.ldspecs=-fuse-linker-plugin
teensy40.menu.opt.ogstd=Debug
teensy40.menu.opt.ogstd.build.flags.optimize=-Og
teensy40.menu.opt.ogstd.build.flags.ldspecs=
#teensy40.menu.opt.oglto=Debug with LTO
#teensy40.menu.opt.oglto.build.flags.optimize=-Og -flto -fno-fat-lto-objects
#teensy40.menu.opt.oglto.build.flags.ldspecs=-fuse-linker-plugin
teensy40.menu.opt.osstd=Smallest Code
teensy40.menu.opt.osstd.build.flags.optimize=-Os --specs=nano.specs
teensy40.menu.opt.osstd.build.flags.ldspecs=
#teensy40.menu.opt.oslto=Smallest Code with LTO
#teensy40.menu.opt.oslto.build.flags.optimize=-Os -flto -fno-fat-lto-objects --specs=nano.specs
#teensy40.menu.opt.oslto.build.flags.ldspecs=-fuse-linker-plugin

teensy40.menu.keys.en-us=US English
teensy40.menu.keys.en-us.build.keylayout=US_ENGLISH
teensy40.menu.keys.fr-ca=Canadian French
teensy40.menu.keys.fr-ca.build.keylayout=CANADIAN_FRENCH
teensy40.menu.keys.xx-ca=Canadian Multilingual
teensy40.menu.keys.xx-ca.build.keylayout=CANADIAN_MULTILINGUAL
teensy40.menu.keys.cz-cz=Czech
teensy40.menu.keys.cz-cz.build.keylayout=CZECH
teensy40.menu.keys.da-da=Danish
teensy40.menu.keys.da-da.build.keylayout=DANISH
teensy40.menu.keys.fi-fi=Finnish
teensy40.menu.keys.fi-fi.build.keylayout=FINNISH
teensy40.menu.keys.fr-fr=French
teensy40.menu.keys.fr-fr.build.keylayout=FRENCH
teensy40.menu.keys.fr-be=French Belgian
teensy40.menu.keys.fr-be.build.keylayout=FRENCH_BELGIAN
teensy40.menu.keys.fr-ch=French Swiss
teensy40.menu.keys.fr-ch.build.keylayout=FRENCH_SWISS
teensy40.menu.keys.de-de=German
teensy40.menu.keys.de-de.build.keylayout=GERMAN
teensy40.menu.keys.de-dm=German (Mac)
teensy40.menu.keys.de-dm.build.keylayout=GERMAN_MAC
teensy40.menu.keys.de-ch=German Swiss
teensy40.menu.keys.de-ch.build.keylayout=GERMAN_SWISS
teensy40.menu.keys.is-is=Icelandic
teensy40.menu.keys.is-is.build.keylayout=ICELANDIC
teensy40.menu.keys.en-ie=Irish
teensy40.menu.keys.en-ie.build.keylayout=IRISH
teensy40.menu.keys.it-it=Italian
teensy40.menu.keys.it-it.build.keylayout=ITALIAN
teensy40.menu.keys.no-no=Norwegian
teensy40.menu.keys.no-no.build.keylayout=NORWEGIAN
teensy40.menu.keys.pt-pt=Portuguese
teensy40.menu.keys.pt-pt.build.keylayout=PORTUGUESE
teensy40.menu.keys.pt-br=Portuguese Brazilian
teensy40.menu.keys.pt-br.build.keylayout=PORTUGUESE_BRAZILIAN
teensy40.menu.keys.rs-rs=Serbian (Latin Only)
teensy40.menu.keys.rs-rs.build.keylayout=SERBIAN_LATIN_ONLY
teensy40.menu.keys.es-es=Spanish
teensy40.menu.keys.es-es.build.keylayout=SPANISH
teensy40.menu.keys.es-mx=Spanish Latin America
teensy40.menu.keys.es-mx.build.keylayout=SPANISH_LATIN_AMERICA
teensy40.menu.keys.sv-se=Swedish
teensy40.menu.keys.sv-se.build.keylayout=SWEDISH
teensy40.menu.keys.tr-tr=Turkish (partial)
teensy40.menu.keys.tr-tr.build.keylayout=TURKISH
teensy40.menu.keys.en-gb=United Kingdom
teensy40.menu.keys.en-gb.build.keylayout=UNITED_KINGDOM
teensy40.menu.keys.usint=US International
teensy40.menu.keys.usint.build.keylayout=US_INTERNATIONAL


teensy36.name=Teensy 3.6
teensy36.upload.maximum_size=1048576
teensy36.upload.maximum_data_size=262144
teensy36.upload.tool=teensyloader
teensy36.upload.protocol=halfkay
teensy36.build.board=TEENSY36
teensy36.build.core=teensy3
teensy36.build.mcu=mk66fx1m0
teensy36.build.warn_data_percentage=99
teensy36.build.toolchain=arm/bin/
teensy36.build.command.gcc=arm-none-eabi-gcc
teensy36.build.command.g++=arm-none-eabi-g++
teensy36.build.command.ar=arm-none-eabi-gcc-ar
teensy36.build.command.objcopy=arm-none-eabi-objcopy
teensy36.build.command.objdump=arm-none-eabi-objdump
teensy36.build.command.linker=arm-none-eabi-gcc
teensy36.build.command.size=arm-none-eabi-size
teensy36.build.flags.common=-g -Wall -ffunction-sections -fdata-sections -nostdlib
teensy36.build.flags.dep=-MMD
teensy36.build.flags.optimize=-Os
teensy36.build.flags.cpu=-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant
teensy36.build.flags.defs=-D__MK66FX1M0__ -DTEENSYDUINO=149
teensy36.build.flags.cpp=-fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti
teensy36.build.flags.c=
teensy36.build.flags.S=-x assembler-with-cpp
teensy36.build.flags.ld=-Wl,--gc-sections,--relax,--defsym=__rtc_localtime={extra.time.local} "-T{build.core.path}/mk66fx1m0.ld" -lstdc++
teensy36.build.flags.libs=-larm_cortexM4lf_math -lm
teensy36.serial.restart_cmd=false
teensy36.menu.usb.serial=Serial
teensy36.menu.usb.serial.build.usbtype=USB_SERIAL
teensy36.menu.usb.keyboard=Keyboard
teensy36.menu.usb.keyboard.build.usbtype=USB_KEYBOARDONLY
teensy36.menu.usb.keyboard.fake_serial=teensy_gateway
teensy36.menu.usb.touch=Keyboard + Touch Screen
teensy36.menu.usb.touch.build.usbtype=USB_TOUCHSCREEN
teensy36.menu.usb.touch.fake_serial=teensy_gateway
teensy36.menu.usb.hidtouch=Keyboard + Mouse + Touch Screen
teensy36.menu.usb.hidtouch.build.usbtype=USB_HID_TOUCHSCREEN
teensy36.menu.usb.hidtouch.fake_serial=teensy_gateway
teensy36.menu.usb.hid=Keyboard + Mouse + Joystick
teensy36.menu.usb.hid.build.usbtype=USB_HID
teensy36.menu.usb.hid.fake_serial=teensy_gateway
teensy36.menu.usb.serialhid=Serial + Keyboard + Mouse + Joystick
teensy36.menu.usb.serialhid.build.usbtype=USB_SERIAL_HID
teensy36.menu.usb.midi=MIDI
teensy36.menu.usb.midi.build.usbtype=USB_MIDI
teensy36.menu.usb.midi.fake_serial=teensy_gateway
teensy36.menu.usb.midi4=MIDIx4
teensy36.menu.usb.midi4.build.usbtype=USB_MIDI4
teensy36.menu.usb.midi4.fake_serial=teensy_gateway
teensy36.menu.usb.midi16=MIDIx16
teensy36.menu.usb.midi16.build.usbtype=USB_MIDI16
teensy36.menu.usb.midi16.fake_serial=teensy_gateway
teensy36.menu.usb.serialmidi=Serial + MIDI
teensy36.menu.usb.serialmidi.build.usbtype=USB_MIDI_SERIAL
teensy36.menu.usb.serialmidi4=Serial + MIDIx4
teensy36.menu.usb.serialmidi4.build.usbtype=USB_MIDI4_SERIAL
teensy36.menu.usb.serialmidi16=Serial + MIDIx16
teensy36.menu.usb.serialmidi16.build.usbtype=USB_MIDI16_SERIAL
teensy36.menu.usb.audio=Audio
teensy36.menu.usb.audio.build.usbtype=USB_AUDIO
teensy36.menu.usb.audio.fake_serial=teensy_gateway
teensy36.menu.usb.serialmidiaudio=Serial + MIDI + Audio
teensy36.menu.usb.serialmidiaudio.build.usbtype=USB_MIDI_AUDIO_SERIAL
teensy36.menu.usb.serialmidi16audio=Serial + MIDIx16 + Audio
teensy36.menu.usb.serialmidi16audio.build.usbtype=USB_MIDI16_AUDIO_SERIAL
teensy36.menu.usb.mtp=MTP Disk (Experimental)
teensy36.menu.usb.mtp.build.usbtype=USB_MTPDISK
teensy36.menu.usb.mtp.fake_serial=teensy_gateway

[COLOR="#FF0000"]teensy36.menu.usb.mtpserial=MTP Disk (Experimental) + Serial
teensy36.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL[/COLOR]

teensy36.menu.usb.rawhid=Raw HID
teensy36.menu.usb.rawhid.build.usbtype=USB_RAWHID
teensy36.menu.usb.rawhid.fake_serial=teensy_gateway
teensy36.menu.usb.flightsim=Flight Sim Controls
teensy36.menu.usb.flightsim.build.usbtype=USB_FLIGHTSIM
teensy36.menu.usb.flightsim.fake_serial=teensy_gateway
teensy36.menu.usb.flightsimjoystick=Flight Sim Controls + Joystick
teensy36.menu.usb.flightsimjoystick.build.usbtype=USB_FLIGHTSIM_JOYSTICK
teensy36.menu.usb.flightsimjoystick.fake_serial=teensy_gateway
teensy36.menu.usb.everything=All of the Above
teensy36.menu.usb.everything.build.usbtype=USB_EVERYTHING
teensy36.menu.usb.disable=No USB
teensy36.menu.usb.disable.build.usbtype=USB_DISABLED

teensy36.menu.speed.180=180 MHz
teensy36.menu.speed.168=168 MHz
teensy36.menu.speed.144=144 MHz
teensy36.menu.speed.120=120 MHz
teensy36.menu.speed.96=96 MHz
teensy36.menu.speed.72=72 MHz
teensy36.menu.speed.48=48 MHz
teensy36.menu.speed.24=24 MHz
teensy36.menu.speed.16=16 MHz (No USB)
teensy36.menu.speed.8=8 MHz (No USB)
teensy36.menu.speed.4=4 MHz (No USB)
teensy36.menu.speed.2=2 MHz (No USB)
teensy36.menu.speed.192=192 MHz (overclock)
teensy36.menu.speed.216=216 MHz (overclock)
teensy36.menu.speed.240=240 MHz (overclock)
teensy36.menu.speed.256=256 MHz (overclock)
teensy36.menu.speed.256.build.fcpu=256000000
teensy36.menu.speed.240.build.fcpu=240000000
teensy36.menu.speed.216.build.fcpu=216000000
teensy36.menu.speed.192.build.fcpu=192000000
teensy36.menu.speed.180.build.fcpu=180000000
teensy36.menu.speed.168.build.fcpu=168000000
teensy36.menu.speed.144.build.fcpu=144000000
teensy36.menu.speed.120.build.fcpu=120000000
teensy36.menu.speed.96.build.fcpu=96000000
teensy36.menu.speed.72.build.fcpu=72000000
teensy36.menu.speed.48.build.fcpu=48000000
teensy36.menu.speed.24.build.fcpu=24000000
teensy36.menu.speed.16.build.fcpu=16000000
teensy36.menu.speed.8.build.fcpu=8000000
teensy36.menu.speed.4.build.fcpu=4000000
teensy36.menu.speed.2.build.fcpu=2000000

teensy36.menu.opt.o2std=Faster
teensy36.menu.opt.o2std.build.flags.optimize=-O2
teensy36.menu.opt.o2std.build.flags.ldspecs=
teensy36.menu.opt.o2lto=Faster with LTO
teensy36.menu.opt.o2lto.build.flags.optimize=-O2 -flto -fno-fat-lto-objects
teensy36.menu.opt.o2lto.build.flags.ldspecs=-fuse-linker-plugin
teensy36.menu.opt.o1std=Fast
teensy36.menu.opt.o1std.build.flags.optimize=-O1
teensy36.menu.opt.o1std.build.flags.ldspecs=
teensy36.menu.opt.o1lto=Fast with LTO
teensy36.menu.opt.o1lto.build.flags.optimize=-O1 -flto -fno-fat-lto-objects
teensy36.menu.opt.o1lto.build.flags.ldspecs=-fuse-linker-plugin
teensy36.menu.opt.o3std=Fastest
teensy36.menu.opt.o3std.build.flags.optimize=-O3
teensy36.menu.opt.o3std.build.flags.ldspecs=
teensy36.menu.opt.o3purestd=Fastest + pure-code
teensy36.menu.opt.o3purestd.build.flags.optimize=-O3 -mpure-code -D__PURE_CODE__
teensy36.menu.opt.o3purestd.build.flags.ldspecs=
teensy36.menu.opt.o3lto=Fastest with LTO
teensy36.menu.opt.o3lto.build.flags.optimize=-O3 -flto -fno-fat-lto-objects
teensy36.menu.opt.o3lto.build.flags.ldspecs=-fuse-linker-plugin
teensy36.menu.opt.o3purelto=Fastest + pure-code with LTO
teensy36.menu.opt.o3purelto.build.flags.optimize=-O3 -mpure-code -D__PURE_CODE__ -flto -fno-fat-lto-objects
teensy36.menu.opt.o3purelto.build.flags.ldspecs=-fuse-linker-plugin
teensy36.menu.opt.ogstd=Debug
teensy36.menu.opt.ogstd.build.flags.optimize=-Og
teensy36.menu.opt.ogstd.build.flags.ldspecs=
teensy36.menu.opt.oglto=Debug with LTO
teensy36.menu.opt.oglto.build.flags.optimize=-Og -flto -fno-fat-lto-objects
teensy36.menu.opt.oglto.build.flags.ldspecs=-fuse-linker-plugin
teensy36.menu.opt.osstd=Smallest Code
teensy36.menu.opt.osstd.build.flags.optimize=-Os --specs=nano.specs
teensy36.menu.opt.osstd.build.flags.ldspecs=
teensy36.menu.opt.oslto=Smallest Code with LTO
teensy36.menu.opt.oslto.build.flags.optimize=-Os -flto -fno-fat-lto-objects --specs=nano.specs
teensy36.menu.opt.oslto.build.flags.ldspecs=-fuse-linker-plugin

teensy36.menu.keys.en-us=US English
teensy36.menu.keys.en-us.build.keylayout=US_ENGLISH
teensy36.menu.keys.fr-ca=Canadian French
teensy36.menu.keys.fr-ca.build.keylayout=CANADIAN_FRENCH
teensy36.menu.keys.xx-ca=Canadian Multilingual
teensy36.menu.keys.xx-ca.build.keylayout=CANADIAN_MULTILINGUAL
teensy36.menu.keys.cz-cz=Czech
teensy36.menu.keys.cz-cz.build.keylayout=CZECH
teensy36.menu.keys.da-da=Danish
teensy36.menu.keys.da-da.build.keylayout=DANISH
teensy36.menu.keys.fi-fi=Finnish
teensy36.menu.keys.fi-fi.build.keylayout=FINNISH
teensy36.menu.keys.fr-fr=French
teensy36.menu.keys.fr-fr.build.keylayout=FRENCH
teensy36.menu.keys.fr-be=French Belgian
teensy36.menu.keys.fr-be.build.keylayout=FRENCH_BELGIAN
teensy36.menu.keys.fr-ch=French Swiss
teensy36.menu.keys.fr-ch.build.keylayout=FRENCH_SWISS
teensy36.menu.keys.de-de=German
teensy36.menu.keys.de-de.build.keylayout=GERMAN
teensy36.menu.keys.de-dm=German (Mac)
teensy36.menu.keys.de-dm.build.keylayout=GERMAN_MAC
teensy36.menu.keys.de-ch=German Swiss
teensy36.menu.keys.de-ch.build.keylayout=GERMAN_SWISS
teensy36.menu.keys.is-is=Icelandic
teensy36.menu.keys.is-is.build.keylayout=ICELANDIC
teensy36.menu.keys.en-ie=Irish
teensy36.menu.keys.en-ie.build.keylayout=IRISH
teensy36.menu.keys.it-it=Italian
teensy36.menu.keys.it-it.build.keylayout=ITALIAN
teensy36.menu.keys.no-no=Norwegian
teensy36.menu.keys.no-no.build.keylayout=NORWEGIAN
teensy36.menu.keys.pt-pt=Portuguese
teensy36.menu.keys.pt-pt.build.keylayout=PORTUGUESE
teensy36.menu.keys.pt-br=Portuguese Brazilian
teensy36.menu.keys.pt-br.build.keylayout=PORTUGUESE_BRAZILIAN
teensy36.menu.keys.rs-rs=Serbian (Latin Only)
teensy36.menu.keys.rs-rs.build.keylayout=SERBIAN_LATIN_ONLY
teensy36.menu.keys.es-es=Spanish
teensy36.menu.keys.es-es.build.keylayout=SPANISH
teensy36.menu.keys.es-mx=Spanish Latin America
teensy36.menu.keys.es-mx.build.keylayout=SPANISH_LATIN_AMERICA
teensy36.menu.keys.sv-se=Swedish
teensy36.menu.keys.sv-se.build.keylayout=SWEDISH
teensy36.menu.keys.tr-tr=Turkish (partial)
teensy36.menu.keys.tr-tr.build.keylayout=TURKISH
teensy36.menu.keys.en-gb=United Kingdom
teensy36.menu.keys.en-gb.build.keylayout=UNITED_KINGDOM
teensy36.menu.keys.usint=US International
teensy36.menu.keys.usint.build.keylayout=US_INTERNATIONAL


teensy35.name=Teensy 3.5
teensy35.upload.maximum_size=524288
teensy35.upload.maximum_data_size=262136
teensy35.upload.tool=teensyloader
teensy35.upload.protocol=halfkay
teensy35.build.board=TEENSY35
teensy35.build.core=teensy3
teensy35.build.mcu=mk64fx512
teensy35.build.warn_data_percentage=98
teensy35.build.toolchain=arm/bin/
teensy35.build.command.gcc=arm-none-eabi-gcc
teensy35.build.command.g++=arm-none-eabi-g++
teensy35.build.command.ar=arm-none-eabi-gcc-ar
teensy35.build.command.objcopy=arm-none-eabi-objcopy
teensy35.build.command.objdump=arm-none-eabi-objdump
teensy35.build.command.linker=arm-none-eabi-gcc
teensy35.build.command.size=arm-none-eabi-size
teensy35.build.flags.common=-g -Wall -ffunction-sections -fdata-sections -nostdlib
teensy35.build.flags.dep=-MMD
teensy35.build.flags.optimize=-Os
teensy35.build.flags.cpu=-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant
teensy35.build.flags.defs=-D__MK64FX512__ -DTEENSYDUINO=149
teensy35.build.flags.cpp=-fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti
teensy35.build.flags.c=
teensy35.build.flags.S=-x assembler-with-cpp
teensy35.build.flags.ld=-Wl,--gc-sections,--relax,--defsym=__rtc_localtime={extra.time.local} "-T{build.core.path}/mk64fx512.ld" -lstdc++
teensy35.build.flags.libs=-larm_cortexM4lf_math -lm
teensy35.serial.restart_cmd=false
teensy35.menu.usb.serial=Serial
teensy35.menu.usb.serial.build.usbtype=USB_SERIAL
teensy35.menu.usb.keyboard=Keyboard
teensy35.menu.usb.keyboard.build.usbtype=USB_KEYBOARDONLY
teensy35.menu.usb.keyboard.fake_serial=teensy_gateway
teensy35.menu.usb.touch=Keyboard + Touch Screen
teensy35.menu.usb.touch.build.usbtype=USB_TOUCHSCREEN
teensy35.menu.usb.touch.fake_serial=teensy_gateway
teensy35.menu.usb.hidtouch=Keyboard + Mouse + Touch Screen
teensy35.menu.usb.hidtouch.build.usbtype=USB_HID_TOUCHSCREEN
teensy35.menu.usb.hidtouch.fake_serial=teensy_gateway
teensy35.menu.usb.hid=Keyboard + Mouse + Joystick
teensy35.menu.usb.hid.build.usbtype=USB_HID
teensy35.menu.usb.hid.fake_serial=teensy_gateway
teensy35.menu.usb.serialhid=Serial + Keyboard + Mouse + Joystick
teensy35.menu.usb.serialhid.build.usbtype=USB_SERIAL_HID
teensy35.menu.usb.midi=MIDI
teensy35.menu.usb.midi.build.usbtype=USB_MIDI
teensy35.menu.usb.midi.fake_serial=teensy_gateway
teensy35.menu.usb.midi4=MIDIx4
teensy35.menu.usb.midi4.build.usbtype=USB_MIDI4
teensy35.menu.usb.midi4.fake_serial=teensy_gateway
teensy35.menu.usb.midi16=MIDIx16
teensy35.menu.usb.midi16.build.usbtype=USB_MIDI16
teensy35.menu.usb.midi16.fake_serial=teensy_gateway
teensy35.menu.usb.serialmidi=Serial + MIDI
teensy35.menu.usb.serialmidi.build.usbtype=USB_MIDI_SERIAL
teensy35.menu.usb.serialmidi4=Serial + MIDIx4
teensy35.menu.usb.serialmidi4.build.usbtype=USB_MIDI4_SERIAL
teensy35.menu.usb.serialmidi16=Serial + MIDIx16
teensy35.menu.usb.serialmidi16.build.usbtype=USB_MIDI16_SERIAL
teensy35.menu.usb.audio=Audio
teensy35.menu.usb.audio.build.usbtype=USB_AUDIO
teensy35.menu.usb.audio.fake_serial=teensy_gateway
teensy35.menu.usb.serialmidiaudio=Serial + MIDI + Audio
teensy35.menu.usb.serialmidiaudio.build.usbtype=USB_MIDI_AUDIO_SERIAL
teensy35.menu.usb.serialmidi16audio=Serial + MIDIx16 + Audio
teensy35.menu.usb.serialmidi16audio.build.usbtype=USB_MIDI16_AUDIO_SERIAL

teensy35.menu.usb.mtp=MTP Disk (Experimental)
teensy35.menu.usb.mtp.build.usbtype=USB_MTPDISK
teensy35.menu.usb.mtp.fake_serial=teensy_gateway
[COLOR="#FF0000"]teensy35.menu.usb.mtpserial=MTP Disk (Experimental) + Serial
teensy35.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL[/COLOR]

teensy35.menu.usb.rawhid=Raw HID
teensy35.menu.usb.rawhid.build.usbtype=USB_RAWHID
teensy35.menu.usb.rawhid.fake_serial=teensy_gateway
teensy35.menu.usb.flightsim=Flight Sim Controls
teensy35.menu.usb.flightsim.build.usbtype=USB_FLIGHTSIM
teensy35.menu.usb.flightsim.fake_serial=teensy_gateway
teensy35.menu.usb.flightsimjoystick=Flight Sim Controls + Joystick
teensy35.menu.usb.flightsimjoystick.build.usbtype=USB_FLIGHTSIM_JOYSTICK
teensy35.menu.usb.flightsimjoystick.fake_serial=teensy_gateway
teensy35.menu.usb.everything=All of the Above
teensy35.menu.usb.everything.build.usbtype=USB_EVERYTHING
teensy35.menu.usb.disable=No USB
teensy35.menu.usb.disable.build.usbtype=USB_DISABLED

teensy35.menu.speed.120=120 MHz
teensy35.menu.speed.96=96 MHz
teensy35.menu.speed.72=72 MHz
teensy35.menu.speed.48=48 MHz
teensy35.menu.speed.24=24 MHz
teensy35.menu.speed.16=16 MHz (No USB)
teensy35.menu.speed.8=8 MHz (No USB)
teensy35.menu.speed.4=4 MHz (No USB)
teensy35.menu.speed.2=2 MHz (No USB)
teensy35.menu.speed.144=144 MHz (overclock)
teensy35.menu.speed.168=168 MHz (overclock)
teensy35.menu.speed.168.build.fcpu=168000000
teensy35.menu.speed.144.build.fcpu=144000000
teensy35.menu.speed.120.build.fcpu=120000000
teensy35.menu.speed.96.build.fcpu=96000000
teensy35.menu.speed.72.build.fcpu=72000000
teensy35.menu.speed.48.build.fcpu=48000000
teensy35.menu.speed.24.build.fcpu=24000000
teensy35.menu.speed.16.build.fcpu=16000000
teensy35.menu.speed.8.build.fcpu=8000000
teensy35.menu.speed.4.build.fcpu=4000000
teensy35.menu.speed.2.build.fcpu=2000000

teensy35.menu.opt.o2std=Faster
teensy35.menu.opt.o2std.build.flags.optimize=-O2
teensy35.menu.opt.o2std.build.flags.ldspecs=
teensy35.menu.opt.o2lto=Faster with LTO
teensy35.menu.opt.o2lto.build.flags.optimize=-O2 -flto -fno-fat-lto-objects
teensy35.menu.opt.o2lto.build.flags.ldspecs=-fuse-linker-plugin
teensy35.menu.opt.o1std=Fast
teensy35.menu.opt.o1std.build.flags.optimize=-O1
teensy35.menu.opt.o1std.build.flags.ldspecs=
teensy35.menu.opt.o1lto=Fast with LTO
teensy35.menu.opt.o1lto.build.flags.optimize=-O1 -flto -fno-fat-lto-objects
teensy35.menu.opt.o1lto.build.flags.ldspecs=-fuse-linker-plugin
teensy35.menu.opt.o3std=Fastest
teensy35.menu.opt.o3std.build.flags.optimize=-O3
teensy35.menu.opt.o3std.build.flags.ldspecs=
teensy35.menu.opt.o3purestd=Fastest + pure-code
teensy35.menu.opt.o3purestd.build.flags.optimize=-O3 -mpure-code -D__PURE_CODE__
teensy35.menu.opt.o3purestd.build.flags.ldspecs=
teensy35.menu.opt.o3lto=Fastest with LTO
teensy35.menu.opt.o3lto.build.flags.optimize=-O3 -flto -fno-fat-lto-objects
teensy35.menu.opt.o3lto.build.flags.ldspecs=-fuse-linker-plugin
teensy35.menu.opt.o3purelto=Fastest + pure-code with LTO
teensy35.menu.opt.o3purelto.build.flags.optimize=-O3 -mpure-code -D__PURE_CODE__ -flto -fno-fat-lto-objects
teensy35.menu.opt.o3purelto.build.flags.ldspecs=-fuse-linker-plugin
teensy35.menu.opt.ogstd=Debug
teensy35.menu.opt.ogstd.build.flags.optimize=-Og
teensy35.menu.opt.ogstd.build.flags.ldspecs=
teensy35.menu.opt.oglto=Debug with LTO
teensy35.menu.opt.oglto.build.flags.optimize=-Og -flto -fno-fat-lto-objects
teensy35.menu.opt.oglto.build.flags.ldspecs=-fuse-linker-plugin
teensy35.menu.opt.osstd=Smallest Code
teensy35.menu.opt.osstd.build.flags.optimize=-Os --specs=nano.specs
teensy35.menu.opt.osstd.build.flags.ldspecs=
teensy35.menu.opt.oslto=Smallest Code with LTO
teensy35.menu.opt.oslto.build.flags.optimize=-Os -flto -fno-fat-lto-objects --specs=nano.specs
teensy35.menu.opt.oslto.build.flags.ldspecs=-fuse-linker-plugin

teensy35.menu.keys.en-us=US English
teensy35.menu.keys.en-us.build.keylayout=US_ENGLISH
teensy35.menu.keys.fr-ca=Canadian French
teensy35.menu.keys.fr-ca.build.keylayout=CANADIAN_FRENCH
teensy35.menu.keys.xx-ca=Canadian Multilingual
teensy35.menu.keys.xx-ca.build.keylayout=CANADIAN_MULTILINGUAL
teensy35.menu.keys.cz-cz=Czech
teensy35.menu.keys.cz-cz.build.keylayout=CZECH
teensy35.menu.keys.da-da=Danish
teensy35.menu.keys.da-da.build.keylayout=DANISH
teensy35.menu.keys.fi-fi=Finnish
teensy35.menu.keys.fi-fi.build.keylayout=FINNISH
teensy35.menu.keys.fr-fr=French
teensy35.menu.keys.fr-fr.build.keylayout=FRENCH
teensy35.menu.keys.fr-be=French Belgian
teensy35.menu.keys.fr-be.build.keylayout=FRENCH_BELGIAN
teensy35.menu.keys.fr-ch=French Swiss
teensy35.menu.keys.fr-ch.build.keylayout=FRENCH_SWISS
teensy35.menu.keys.de-de=German
teensy35.menu.keys.de-de.build.keylayout=GERMAN
teensy35.menu.keys.de-dm=German (Mac)
teensy35.menu.keys.de-dm.build.keylayout=GERMAN_MAC
teensy35.menu.keys.de-ch=German Swiss
teensy35.menu.keys.de-ch.build.keylayout=GERMAN_SWISS
teensy35.menu.keys.is-is=Icelandic
teensy35.menu.keys.is-is.build.keylayout=ICELANDIC
teensy35.menu.keys.en-ie=Irish
teensy35.menu.keys.en-ie.build.keylayout=IRISH
teensy35.menu.keys.it-it=Italian
teensy35.menu.keys.it-it.build.keylayout=ITALIAN
teensy35.menu.keys.no-no=Norwegian
teensy35.menu.keys.no-no.build.keylayout=NORWEGIAN
teensy35.menu.keys.pt-pt=Portuguese
teensy35.menu.keys.pt-pt.build.keylayout=PORTUGUESE
teensy35.menu.keys.pt-br=Portuguese Brazilian
teensy35.menu.keys.pt-br.build.keylayout=PORTUGUESE_BRAZILIAN
teensy35.menu.keys.rs-rs=Serbian (Latin Only)
teensy35.menu.keys.rs-rs.build.keylayout=SERBIAN_LATIN_ONLY
teensy35.menu.keys.es-es=Spanish
teensy35.menu.keys.es-es.build.keylayout=SPANISH
teensy35.menu.keys.es-mx=Spanish Latin America
teensy35.menu.keys.es-mx.build.keylayout=SPANISH_LATIN_AMERICA
teensy35.menu.keys.sv-se=Swedish
teensy35.menu.keys.sv-se.build.keylayout=SWEDISH
teensy35.menu.keys.tr-tr=Turkish (partial)
teensy35.menu.keys.tr-tr.build.keylayout=TURKISH
teensy35.menu.keys.en-gb=United Kingdom
teensy35.menu.keys.en-gb.build.keylayout=UNITED_KINGDOM
teensy35.menu.keys.usint=US International
teensy35.menu.keys.usint.build.keylayout=US_INTERNATIONAL


teensy31.name=Teensy 3.2 / 3.1
teensy31.upload.maximum_size=262144
teensy31.upload.maximum_data_size=65536
teensy31.upload.tool=teensyloader
teensy31.upload.protocol=halfkay
teensy31.build.board=TEENSY31
teensy31.build.core=teensy3
teensy31.build.mcu=mk20dx256
teensy31.build.warn_data_percentage=97
teensy31.build.toolchain=arm/bin/
teensy31.build.command.gcc=arm-none-eabi-gcc
teensy31.build.command.g++=arm-none-eabi-g++
teensy31.build.command.ar=arm-none-eabi-gcc-ar
teensy31.build.command.objcopy=arm-none-eabi-objcopy
teensy31.build.command.objdump=arm-none-eabi-objdump
teensy31.build.command.linker=arm-none-eabi-gcc
teensy31.build.command.size=arm-none-eabi-size
teensy31.build.flags.common=-g -Wall -ffunction-sections -fdata-sections -nostdlib
teensy31.build.flags.dep=-MMD
teensy31.build.flags.optimize=-Os
teensy31.build.flags.cpu=-mthumb -mcpu=cortex-m4 -fsingle-precision-constant
teensy31.build.flags.defs=-D__MK20DX256__ -DTEENSYDUINO=149
teensy31.build.flags.cpp=-fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti
teensy31.build.flags.c=
teensy31.build.flags.S=-x assembler-with-cpp
teensy31.build.flags.ld=-Wl,--gc-sections,--relax,--defsym=__rtc_localtime={extra.time.local} "-T{build.core.path}/mk20dx256.ld" -lstdc++
teensy31.build.flags.libs=-larm_cortexM4l_math -lm
teensy31.serial.restart_cmd=false
teensy31.menu.usb.serial=Serial
teensy31.menu.usb.serial.build.usbtype=USB_SERIAL
teensy31.menu.usb.keyboard=Keyboard
teensy31.menu.usb.keyboard.build.usbtype=USB_KEYBOARDONLY
teensy31.menu.usb.keyboard.fake_serial=teensy_gateway
teensy31.menu.usb.touch=Keyboard + Touch Screen
teensy31.menu.usb.touch.build.usbtype=USB_TOUCHSCREEN
teensy31.menu.usb.touch.fake_serial=teensy_gateway
teensy31.menu.usb.hidtouch=Keyboard + Mouse + Touch Screen
teensy31.menu.usb.hidtouch.build.usbtype=USB_HID_TOUCHSCREEN
teensy31.menu.usb.hidtouch.fake_serial=teensy_gateway
teensy31.menu.usb.hid=Keyboard + Mouse + Joystick
teensy31.menu.usb.hid.build.usbtype=USB_HID
teensy31.menu.usb.hid.fake_serial=teensy_gateway
teensy31.menu.usb.serialhid=Serial + Keyboard + Mouse + Joystick
teensy31.menu.usb.serialhid.build.usbtype=USB_SERIAL_HID
teensy31.menu.usb.midi=MIDI
teensy31.menu.usb.midi.build.usbtype=USB_MIDI
teensy31.menu.usb.midi.fake_serial=teensy_gateway
teensy31.menu.usb.midi4=MIDIx4
teensy31.menu.usb.midi4.build.usbtype=USB_MIDI4
teensy31.menu.usb.midi4.fake_serial=teensy_gateway
teensy31.menu.usb.midi16=MIDIx16
teensy31.menu.usb.midi16.build.usbtype=USB_MIDI16
teensy31.menu.usb.midi16.fake_serial=teensy_gateway
teensy31.menu.usb.serialmidi=Serial + MIDI
teensy31.menu.usb.serialmidi.build.usbtype=USB_MIDI_SERIAL
teensy31.menu.usb.serialmidi4=Serial + MIDIx4
teensy31.menu.usb.serialmidi4.build.usbtype=USB_MIDI4_SERIAL
teensy31.menu.usb.serialmidi16=Serial + MIDIx16
teensy31.menu.usb.serialmidi16.build.usbtype=USB_MIDI16_SERIAL
teensy31.menu.usb.audio=Audio
teensy31.menu.usb.audio.build.usbtype=USB_AUDIO
teensy31.menu.usb.audio.fake_serial=teensy_gateway
teensy31.menu.usb.serialmidiaudio=Serial + MIDI + Audio
teensy31.menu.usb.serialmidiaudio.build.usbtype=USB_MIDI_AUDIO_SERIAL
teensy31.menu.usb.serialmidi16audio=Serial + MIDIx16 + Audio
teensy31.menu.usb.serialmidi16audio.build.usbtype=USB_MIDI16_AUDIO_SERIAL

teensy31.menu.usb.mtp=MTP Disk (Experimental)
teensy31.menu.usb.mtp.build.usbtype=USB_MTPDISK
teensy31.menu.usb.mtp.fake_serial=teensy_gateway
[COLOR="#FF0000"]teensy31.menu.usb.mtpserial=MTP Disk (Experimental) + Serial
teensy31.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL[/COLOR]

teensy31.menu.usb.rawhid=Raw HID
teensy31.menu.usb.rawhid.build.usbtype=USB_RAWHID
teensy31.menu.usb.rawhid.fake_serial=teensy_gateway
teensy31.menu.usb.flightsim=Flight Sim Controls
teensy31.menu.usb.flightsim.build.usbtype=USB_FLIGHTSIM
teensy31.menu.usb.flightsim.fake_serial=teensy_gateway
teensy31.menu.usb.flightsimjoystick=Flight Sim Controls + Joystick
teensy31.menu.usb.flightsimjoystick.build.usbtype=USB_FLIGHTSIM_JOYSTICK
teensy31.menu.usb.flightsimjoystick.fake_serial=teensy_gateway
teensy31.menu.usb.everything=All of the Above
teensy31.menu.usb.everything.build.usbtype=USB_EVERYTHING
teensy31.menu.usb.disable=No USB
teensy31.menu.usb.disable.build.usbtype=USB_DISABLED

teensy31.menu.speed.96=96 MHz (overclock)
teensy31.menu.speed.72=72 MHz
teensy31.menu.speed.48=48 MHz
teensy31.menu.speed.24=24 MHz
teensy31.menu.speed.16=16 MHz (No USB)
teensy31.menu.speed.8=8 MHz (No USB)
teensy31.menu.speed.4=4 MHz (No USB)
teensy31.menu.speed.2=2 MHz (No USB)
teensy31.menu.speed.120=120 MHz (overclock)
#uncomment these if you want to try faster overclocking
#teensy31.menu.speed.144=144 MHz (overclock)
#teensy31.menu.speed.168=168 MHz (overclock)
teensy31.menu.speed.168.build.fcpu=168000000
teensy31.menu.speed.144.build.fcpu=144000000
teensy31.menu.speed.120.build.fcpu=120000000
teensy31.menu.speed.96.build.fcpu=96000000
teensy31.menu.speed.72.build.fcpu=72000000
teensy31.menu.speed.48.build.fcpu=48000000
teensy31.menu.speed.24.build.fcpu=24000000
teensy31.menu.speed.16.build.fcpu=16000000
teensy31.menu.speed.8.build.fcpu=8000000
teensy31.menu.speed.4.build.fcpu=4000000
teensy31.menu.speed.2.build.fcpu=2000000

teensy31.menu.opt.o2std=Faster
teensy31.menu.opt.o2std.build.flags.optimize=-O2
teensy31.menu.opt.o2std.build.flags.ldspecs=
teensy31.menu.opt.o2lto=Faster with LTO
teensy31.menu.opt.o2lto.build.flags.optimize=-O2 -flto -fno-fat-lto-objects
teensy31.menu.opt.o2lto.build.flags.ldspecs=-fuse-linker-plugin
teensy31.menu.opt.o1std=Fast
teensy31.menu.opt.o1std.build.flags.optimize=-O1
teensy31.menu.opt.o1std.build.flags.ldspecs=
teensy31.menu.opt.o1lto=Fast with LTO
teensy31.menu.opt.o1lto.build.flags.optimize=-O1 -flto -fno-fat-lto-objects
teensy31.menu.opt.o1lto.build.flags.ldspecs=-fuse-linker-plugin
teensy31.menu.opt.o3std=Fastest
teensy31.menu.opt.o3std.build.flags.optimize=-O3
teensy31.menu.opt.o3std.build.flags.ldspecs=
teensy31.menu.opt.o3purestd=Fastest + pure-code
teensy31.menu.opt.o3purestd.build.flags.optimize=-O3 -mpure-code -D__PURE_CODE__
teensy31.menu.opt.o3purestd.build.flags.ldspecs=
teensy31.menu.opt.o3lto=Fastest with LTO
teensy31.menu.opt.o3lto.build.flags.optimize=-O3 -flto -fno-fat-lto-objects
teensy31.menu.opt.o3lto.build.flags.ldspecs=-fuse-linker-plugin
teensy31.menu.opt.o3purelto=Fastest + pure-code with LTO
teensy31.menu.opt.o3purelto.build.flags.optimize=-O3 -mpure-code -D__PURE_CODE__ -flto -fno-fat-lto-objects
teensy31.menu.opt.o3purelto.build.flags.ldspecs=-fuse-linker-plugin
teensy31.menu.opt.ogstd=Debug
teensy31.menu.opt.ogstd.build.flags.optimize=-Og
teensy31.menu.opt.ogstd.build.flags.ldspecs=
teensy31.menu.opt.oglto=Debug with LTO
teensy31.menu.opt.oglto.build.flags.optimize=-Og -flto -fno-fat-lto-objects
teensy31.menu.opt.oglto.build.flags.ldspecs=-fuse-linker-plugin
teensy31.menu.opt.osstd=Smallest Code
teensy31.menu.opt.osstd.build.flags.optimize=-Os --specs=nano.specs
teensy31.menu.opt.osstd.build.flags.ldspecs=
teensy31.menu.opt.oslto=Smallest Code with LTO
teensy31.menu.opt.oslto.build.flags.optimize=-Os -flto -fno-fat-lto-objects --specs=nano.specs
teensy31.menu.opt.oslto.build.flags.ldspecs=-fuse-linker-plugin

teensy31.menu.keys.en-us=US English
teensy31.menu.keys.en-us.build.keylayout=US_ENGLISH
teensy31.menu.keys.fr-ca=Canadian French
teensy31.menu.keys.fr-ca.build.keylayout=CANADIAN_FRENCH
teensy31.menu.keys.xx-ca=Canadian Multilingual
teensy31.menu.keys.xx-ca.build.keylayout=CANADIAN_MULTILINGUAL
teensy31.menu.keys.cz-cz=Czech
teensy31.menu.keys.cz-cz.build.keylayout=CZECH
teensy31.menu.keys.da-da=Danish
teensy31.menu.keys.da-da.build.keylayout=DANISH
teensy31.menu.keys.fi-fi=Finnish
teensy31.menu.keys.fi-fi.build.keylayout=FINNISH
teensy31.menu.keys.fr-fr=French
teensy31.menu.keys.fr-fr.build.keylayout=FRENCH
teensy31.menu.keys.fr-be=French Belgian
teensy31.menu.keys.fr-be.build.keylayout=FRENCH_BELGIAN
teensy31.menu.keys.fr-ch=French Swiss
teensy31.menu.keys.fr-ch.build.keylayout=FRENCH_SWISS
teensy31.menu.keys.de-de=German
teensy31.menu.keys.de-de.build.keylayout=GERMAN
teensy31.menu.keys.de-dm=German (Mac)
teensy31.menu.keys.de-dm.build.keylayout=GERMAN_MAC
teensy31.menu.keys.de-ch=German Swiss
teensy31.menu.keys.de-ch.build.keylayout=GERMAN_SWISS
teensy31.menu.keys.is-is=Icelandic
teensy31.menu.keys.is-is.build.keylayout=ICELANDIC
teensy31.menu.keys.en-ie=Irish
teensy31.menu.keys.en-ie.build.keylayout=IRISH
teensy31.menu.keys.it-it=Italian
teensy31.menu.keys.it-it.build.keylayout=ITALIAN
teensy31.menu.keys.no-no=Norwegian
teensy31.menu.keys.no-no.build.keylayout=NORWEGIAN
teensy31.menu.keys.pt-pt=Portuguese
teensy31.menu.keys.pt-pt.build.keylayout=PORTUGUESE
teensy31.menu.keys.pt-br=Portuguese Brazilian
teensy31.menu.keys.pt-br.build.keylayout=PORTUGUESE_BRAZILIAN
teensy31.menu.keys.rs-rs=Serbian (Latin Only)
teensy31.menu.keys.rs-rs.build.keylayout=SERBIAN_LATIN_ONLY
teensy31.menu.keys.es-es=Spanish
teensy31.menu.keys.es-es.build.keylayout=SPANISH
teensy31.menu.keys.es-mx=Spanish Latin America
teensy31.menu.keys.es-mx.build.keylayout=SPANISH_LATIN_AMERICA
teensy31.menu.keys.sv-se=Swedish
teensy31.menu.keys.sv-se.build.keylayout=SWEDISH
teensy31.menu.keys.tr-tr=Turkish (partial)
teensy31.menu.keys.tr-tr.build.keylayout=TURKISH
teensy31.menu.keys.en-gb=United Kingdom
teensy31.menu.keys.en-gb.build.keylayout=UNITED_KINGDOM
teensy31.menu.keys.usint=US International
teensy31.menu.keys.usint.build.keylayout=US_INTERNATIONAL

teensy31.vid.0=0x16C0
teensy31.vid.1=0x16C0
teensy31.vid.2=0x16C0
teensy31.vid.3=0x16C0
teensy31.vid.4=0x16C0
teensy31.pid.0=0x0483
teensy31.pid.1=0x0487
teensy31.pid.2=0x0489
teensy31.pid.3=0x048A
teensy31.pid.4=0x0476

teensy30.name=Teensy 3.0
teensy30.upload.maximum_size=131072
teensy30.upload.maximum_data_size=16384
teensy30.upload.tool=teensyloader
teensy30.upload.protocol=halfkay
teensy30.build.board=TEENSY30
teensy30.build.core=teensy3
teensy30.build.mcu=mk20dx128
teensy30.build.warn_data_percentage=94
teensy30.build.toolchain=arm/bin/
teensy30.build.command.gcc=arm-none-eabi-gcc
teensy30.build.command.g++=arm-none-eabi-g++
teensy30.build.command.ar=arm-none-eabi-gcc-ar
teensy30.build.command.objcopy=arm-none-eabi-objcopy
teensy30.build.command.objdump=arm-none-eabi-objdump
teensy30.build.command.linker=arm-none-eabi-gcc
teensy30.build.command.size=arm-none-eabi-size
teensy30.build.flags.common=-g -Wall -ffunction-sections -fdata-sections -nostdlib
teensy30.build.flags.dep=-MMD
teensy30.build.flags.optimize=-Os
teensy30.build.flags.cpu=-mthumb -mcpu=cortex-m4 -fsingle-precision-constant
teensy30.build.flags.defs=-D__MK20DX128__ -DTEENSYDUINO=149
teensy30.build.flags.cpp=-fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti
teensy30.build.flags.c=
teensy30.build.flags.S=-x assembler-with-cpp
teensy30.build.flags.ld=-Wl,--gc-sections,--relax,--defsym=__rtc_localtime={extra.time.local} "-T{build.core.path}/mk20dx128.ld" -lstdc++
teensy30.build.flags.ldspecs=--specs=nano.specs
teensy30.build.flags.libs=-larm_cortexM4l_math -lm
teensy30.serial.restart_cmd=false

teensy30.menu.usb.serial=Serial
teensy30.menu.usb.serial.build.usbtype=USB_SERIAL
teensy30.menu.usb.keyboard=Keyboard
teensy30.menu.usb.keyboard.build.usbtype=USB_KEYBOARDONLY
teensy30.menu.usb.keyboard.fake_serial=teensy_gateway
teensy30.menu.usb.hid=Keyboard + Mouse + Joystick
teensy30.menu.usb.hid.build.usbtype=USB_HID
teensy30.menu.usb.hid.fake_serial=teensy_gateway
teensy30.menu.usb.serialhid=Serial + Keyboard + Mouse + Joystick
teensy30.menu.usb.serialhid.build.usbtype=USB_SERIAL_HID
teensy30.menu.usb.touch=Keyboard + Touch Screen
teensy30.menu.usb.touch.build.usbtype=USB_TOUCHSCREEN
teensy30.menu.usb.touch.fake_serial=teensy_gateway
teensy30.menu.usb.midi=MIDI
teensy30.menu.usb.midi.build.usbtype=USB_MIDI
teensy30.menu.usb.midi.fake_serial=teensy_gateway
teensy30.menu.usb.midi4=MIDIx4
teensy30.menu.usb.midi4.build.usbtype=USB_MIDI4
teensy30.menu.usb.midi4.fake_serial=teensy_gateway
teensy30.menu.usb.serialmidi=Serial + MIDI
teensy30.menu.usb.serialmidi.build.usbtype=USB_MIDI_SERIAL
teensy30.menu.usb.serialmidi4=Serial + MIDIx4
teensy30.menu.usb.serialmidi4.build.usbtype=USB_MIDI4_SERIAL
teensy30.menu.usb.audio=Audio
teensy30.menu.usb.audio.build.usbtype=USB_AUDIO
teensy30.menu.usb.audio.fake_serial=teensy_gateway
teensy30.menu.usb.serialmidiaudio=Serial + MIDI + Audio
teensy30.menu.usb.serialmidiaudio.build.usbtype=USB_MIDI_AUDIO_SERIAL

teensy30.menu.usb.mtp=MTP Disk (Experimental)
teensy30.menu.usb.mtp.build.usbtype=USB_MTPDISK
teensy30.menu.usb.mtp.fake_serial=teensy_gateway
[COLOR="#FF0000"]teensy30.menu.usb.mtpserial=MTP Disk (Experimental) + Serial
teensy30.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL[/COLOR]

teensy30.menu.usb.rawhid=Raw HID
teensy30.menu.usb.rawhid.build.usbtype=USB_RAWHID
teensy30.menu.usb.rawhid.fake_serial=teensy_gateway
teensy30.menu.usb.flightsim=Flight Sim Controls
teensy30.menu.usb.flightsim.build.usbtype=USB_FLIGHTSIM
teensy30.menu.usb.flightsim.fake_serial=teensy_gateway
teensy30.menu.usb.disable=No USB
teensy30.menu.usb.disable.build.usbtype=USB_DISABLED

teensy30.menu.speed.96=96 MHz (overclock)
teensy30.menu.speed.48=48 MHz
teensy30.menu.speed.24=24 MHz
teensy30.menu.speed.96.build.fcpu=96000000
teensy30.menu.speed.48.build.fcpu=48000000
teensy30.menu.speed.24.build.fcpu=24000000

teensy30.menu.opt.o2std=Faster
teensy30.menu.opt.o2std.build.flags.optimize=-O2
teensy30.menu.opt.o2std.build.flags.ldspecs=
teensy30.menu.opt.o2lto=Faster with LTO
teensy30.menu.opt.o2lto.build.flags.optimize=-O2 -flto -fno-fat-lto-objects
teensy30.menu.opt.o2lto.build.flags.ldspecs=-fuse-linker-plugin
teensy30.menu.opt.o1std=Fast
teensy30.menu.opt.o1std.build.flags.optimize=-O1
teensy30.menu.opt.o1std.build.flags.ldspecs=
teensy30.menu.opt.o1lto=Fast with LTO
teensy30.menu.opt.o1lto.build.flags.optimize=-O1 -flto -fno-fat-lto-objects
teensy30.menu.opt.o1lto.build.flags.ldspecs=-fuse-linker-plugin
teensy30.menu.opt.o3std=Fastest
teensy30.menu.opt.o3std.build.flags.optimize=-O3
teensy30.menu.opt.o3std.build.flags.ldspecs=
teensy30.menu.opt.o3lto=Fastest with LTO
teensy30.menu.opt.o3lto.build.flags.optimize=-O3 -flto -fno-fat-lto-objects
teensy30.menu.opt.o3lto.build.flags.ldspecs=-fuse-linker-plugin
teensy30.menu.opt.ogstd=Debug
teensy30.menu.opt.ogstd.build.flags.optimize=-Og
teensy30.menu.opt.ogstd.build.flags.ldspecs=
teensy30.menu.opt.oglto=Debug with LTO
teensy30.menu.opt.oglto.build.flags.optimize=-Og -flto -fno-fat-lto-objects
teensy30.menu.opt.oglto.build.flags.ldspecs=-fuse-linker-plugin
teensy30.menu.opt.osstd=Smallest Code
teensy30.menu.opt.osstd.build.flags.optimize=-Os --specs=nano.specs
teensy30.menu.opt.osstd.build.flags.ldspecs=
teensy30.menu.opt.oslto=Smallest Code with LTO
teensy30.menu.opt.oslto.build.flags.optimize=-Os -flto -fno-fat-lto-objects --specs=nano.specs
teensy30.menu.opt.oslto.build.flags.ldspecs=-fuse-linker-plugin

teensy30.menu.keys.en-us=US English
teensy30.menu.keys.en-us.build.keylayout=US_ENGLISH
teensy30.menu.keys.fr-ca=Canadian French
teensy30.menu.keys.fr-ca.build.keylayout=CANADIAN_FRENCH
teensy30.menu.keys.xx-ca=Canadian Multilingual
teensy30.menu.keys.xx-ca.build.keylayout=CANADIAN_MULTILINGUAL
teensy30.menu.keys.cz-cz=Czech
teensy30.menu.keys.cz-cz.build.keylayout=CZECH
teensy30.menu.keys.da-da=Danish
teensy30.menu.keys.da-da.build.keylayout=DANISH
teensy30.menu.keys.fi-fi=Finnish
teensy30.menu.keys.fi-fi.build.keylayout=FINNISH
teensy30.menu.keys.fr-fr=French
teensy30.menu.keys.fr-fr.build.keylayout=FRENCH
teensy30.menu.keys.fr-be=French Belgian
teensy30.menu.keys.fr-be.build.keylayout=FRENCH_BELGIAN
teensy30.menu.keys.fr-ch=French Swiss
teensy30.menu.keys.fr-ch.build.keylayout=FRENCH_SWISS
teensy30.menu.keys.de-de=German
teensy30.menu.keys.de-de.build.keylayout=GERMAN
teensy30.menu.keys.de-dm=German (Mac)
teensy30.menu.keys.de-dm.build.keylayout=GERMAN_MAC
teensy30.menu.keys.de-ch=German Swiss
teensy30.menu.keys.de-ch.build.keylayout=GERMAN_SWISS
teensy30.menu.keys.is-is=Icelandic
teensy30.menu.keys.is-is.build.keylayout=ICELANDIC
teensy30.menu.keys.en-ie=Irish
teensy30.menu.keys.en-ie.build.keylayout=IRISH
teensy30.menu.keys.it-it=Italian
teensy30.menu.keys.it-it.build.keylayout=ITALIAN
teensy30.menu.keys.no-no=Norwegian
teensy30.menu.keys.no-no.build.keylayout=NORWEGIAN
teensy30.menu.keys.pt-pt=Portuguese
teensy30.menu.keys.pt-pt.build.keylayout=PORTUGUESE
teensy30.menu.keys.pt-br=Portuguese Brazilian
teensy30.menu.keys.pt-br.build.keylayout=PORTUGUESE_BRAZILIAN
teensy30.menu.keys.rs-rs=Serbian (Latin Only)
teensy30.menu.keys.rs-rs.build.keylayout=SERBIAN_LATIN_ONLY
teensy30.menu.keys.es-es=Spanish
teensy30.menu.keys.es-es.build.keylayout=SPANISH
teensy30.menu.keys.es-mx=Spanish Latin America
teensy30.menu.keys.es-mx.build.keylayout=SPANISH_LATIN_AMERICA
teensy30.menu.keys.sv-se=Swedish
teensy30.menu.keys.sv-se.build.keylayout=SWEDISH
teensy30.menu.keys.tr-tr=Turkish (partial)
teensy30.menu.keys.tr-tr.build.keylayout=TURKISH
teensy30.menu.keys.en-gb=United Kingdom
teensy30.menu.keys.en-gb.build.keylayout=UNITED_KINGDOM
teensy30.menu.keys.usint=US International
teensy30.menu.keys.usint.build.keylayout=US_INTERNATIONAL


teensyLC.name=Teensy LC
teensyLC.upload.maximum_size=63488
teensyLC.upload.maximum_data_size=8192
teensyLC.upload.tool=teensyloader
teensyLC.upload.protocol=halfkay
teensyLC.build.board=TEENSYLC
teensyLC.build.core=teensy3
teensyLC.build.mcu=mkl26z64
teensyLC.build.warn_data_percentage=88
teensyLC.build.toolchain=arm/bin/
teensyLC.build.command.gcc=arm-none-eabi-gcc
teensyLC.build.command.g++=arm-none-eabi-g++
teensyLC.build.command.ar=arm-none-eabi-gcc-ar
teensyLC.build.command.objcopy=arm-none-eabi-objcopy
teensyLC.build.command.objdump=arm-none-eabi-objdump
teensyLC.build.command.linker=arm-none-eabi-gcc
teensyLC.build.command.size=arm-none-eabi-size
teensyLC.build.flags.common=-g -Wall -ffunction-sections -fdata-sections -nostdlib
teensyLC.build.flags.dep=-MMD
teensyLC.build.flags.cpu=-mthumb -mcpu=cortex-m0plus -fsingle-precision-constant
teensyLC.build.flags.defs=-D__MKL26Z64__ -DTEENSYDUINO=149
teensyLC.build.flags.cpp=-fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti
teensyLC.build.flags.c=
teensyLC.build.flags.S=-x assembler-with-cpp
teensyLC.build.flags.ld=-Wl,--gc-sections,--relax,--defsym=__rtc_localtime={extra.time.local} "-T{build.core.path}/mkl26z64.ld" -lstdc++
teensyLC.build.flags.libs=-larm_cortexM0l_math -lm
teensyLC.serial.restart_cmd=false
teensyLC.menu.usb.serial=Serial
teensyLC.menu.usb.serial.build.usbtype=USB_SERIAL
teensyLC.menu.usb.keyboard=Keyboard
teensyLC.menu.usb.keyboard.build.usbtype=USB_KEYBOARDONLY
teensyLC.menu.usb.keyboard.fake_serial=teensy_gateway
teensyLC.menu.usb.hid=Keyboard + Mouse + Joystick
teensyLC.menu.usb.hid.build.usbtype=USB_HID
teensyLC.menu.usb.hid.fake_serial=teensy_gateway
teensyLC.menu.usb.serialhid=Serial + Keyboard + Mouse + Joystick
teensyLC.menu.usb.serialhid.build.usbtype=USB_SERIAL_HID
teensyLC.menu.usb.touch=Keyboard + Touch Screen
teensyLC.menu.usb.touch.build.usbtype=USB_TOUCHSCREEN
teensyLC.menu.usb.touch.fake_serial=teensy_gateway
teensyLC.menu.usb.midi=MIDI
teensyLC.menu.usb.midi.build.usbtype=USB_MIDI
teensyLC.menu.usb.midi.fake_serial=teensy_gateway
teensyLC.menu.usb.midi4=MIDIx4
teensyLC.menu.usb.midi4.build.usbtype=USB_MIDI4
teensyLC.menu.usb.midi4.fake_serial=teensy_gateway
teensyLC.menu.usb.serialmidi=Serial + MIDI
teensyLC.menu.usb.serialmidi.build.usbtype=USB_MIDI_SERIAL
teensyLC.menu.usb.serialmidi4=Serial + MIDIx4
teensyLC.menu.usb.serialmidi4.build.usbtype=USB_MIDI4_SERIAL

teensyLC.menu.usb.mtp=MTP Disk (Experimental)
teensyLC.menu.usb.mtp.build.usbtype=USB_MTPDISK
teensyLC.menu.usb.mtp.fake_serial=teensy_gateway
[COLOR="#FF0000"]teensyLC.menu.usb.mtpserial=MTP Disk (Experimental) + Serial
teensyLC.menu.usb.mtpserial.build.usbtype=USB_MTPDISK_SERIAL[/COLOR]

teensyLC.menu.usb.rawhid=Raw HID
teensyLC.menu.usb.rawhid.build.usbtype=USB_RAWHID
teensyLC.menu.usb.rawhid.fake_serial=teensy_gateway
teensyLC.menu.usb.flightsim=Flight Sim Controls
teensyLC.menu.usb.flightsim.build.usbtype=USB_FLIGHTSIM
teensyLC.menu.usb.flightsim.fake_serial=teensy_gateway
teensyLC.menu.usb.disable=No USB
teensyLC.menu.usb.disable.build.usbtype=USB_DISABLED

teensyLC.menu.speed.48=48 MHz
teensyLC.menu.speed.24=24 MHz
teensyLC.menu.speed.48.build.fcpu=48000000
teensyLC.menu.speed.24.build.fcpu=24000000

teensyLC.menu.opt.osstd=Smallest Code
teensyLC.menu.opt.osstd.build.flags.optimize=-Os --specs=nano.specs
teensyLC.menu.opt.osstd.build.flags.ldspecs=
teensyLC.menu.opt.oslto=Smallest Code with LTO
teensyLC.menu.opt.oslto.build.flags.optimize=-Os -flto -fno-fat-lto-objects --specs=nano.specs
teensyLC.menu.opt.oslto.build.flags.ldspecs=-fuse-linker-plugin
teensyLC.menu.opt.ogstd=Debug
teensyLC.menu.opt.ogstd.build.flags.optimize=-Og
teensyLC.menu.opt.ogstd.build.flags.ldspecs=
teensyLC.menu.opt.oglto=Debug with LTO
teensyLC.menu.opt.oglto.build.flags.optimize=-Og -flto -fno-fat-lto-objects
teensyLC.menu.opt.oglto.build.flags.ldspecs=-fuse-linker-plugin
teensyLC.menu.opt.o3std=Fastest
teensyLC.menu.opt.o3std.build.flags.optimize=-O3
teensyLC.menu.opt.o3std.build.flags.ldspecs=
teensyLC.menu.opt.o3lto=Fastest with LTO
teensyLC.menu.opt.o3lto.build.flags.optimize=-O3 -flto -fno-fat-lto-objects
teensyLC.menu.opt.o3lto.build.flags.ldspecs=-fuse-linker-plugin
teensyLC.menu.opt.o2std=Faster
teensyLC.menu.opt.o2std.build.flags.optimize=-O2
teensyLC.menu.opt.o2std.build.flags.ldspecs=
teensyLC.menu.opt.o2lto=Faster with LTO
teensyLC.menu.opt.o2lto.build.flags.optimize=-O2 -flto -fno-fat-lto-objects
teensyLC.menu.opt.o2lto.build.flags.ldspecs=-fuse-linker-plugin
teensyLC.menu.opt.o1std=Fast
teensyLC.menu.opt.o1std.build.flags.optimize=-O1
teensyLC.menu.opt.o1std.build.flags.ldspecs=
teensyLC.menu.opt.o1lto=Fast with LTO
teensyLC.menu.opt.o1lto.build.flags.optimize=-O1 -flto -fno-fat-lto-objects
teensyLC.menu.opt.o1lto.build.flags.ldspecs=-fuse-linker-plugin

teensyLC.menu.keys.en-us=US English
teensyLC.menu.keys.en-us.build.keylayout=US_ENGLISH
teensyLC.menu.keys.fr-ca=Canadian French
teensyLC.menu.keys.fr-ca.build.keylayout=CANADIAN_FRENCH
teensyLC.menu.keys.xx-ca=Canadian Multilingual
teensyLC.menu.keys.xx-ca.build.keylayout=CANADIAN_MULTILINGUAL
teensyLC.menu.keys.cz-cz=Czech
teensyLC.menu.keys.cz-cz.build.keylayout=CZECH
teensyLC.menu.keys.da-da=Danish
teensyLC.menu.keys.da-da.build.keylayout=DANISH
teensyLC.menu.keys.fi-fi=Finnish
teensyLC.menu.keys.fi-fi.build.keylayout=FINNISH
teensyLC.menu.keys.fr-fr=French
teensyLC.menu.keys.fr-fr.build.keylayout=FRENCH
teensyLC.menu.keys.fr-be=French Belgian
teensyLC.menu.keys.fr-be.build.keylayout=FRENCH_BELGIAN
teensyLC.menu.keys.fr-ch=French Swiss
teensyLC.menu.keys.fr-ch.build.keylayout=FRENCH_SWISS
teensyLC.menu.keys.de-de=German
teensyLC.menu.keys.de-de.build.keylayout=GERMAN
teensyLC.menu.keys.de-dm=German (Mac)
teensyLC.menu.keys.de-dm.build.keylayout=GERMAN_MAC
teensyLC.menu.keys.de-ch=German Swiss
teensyLC.menu.keys.de-ch.build.keylayout=GERMAN_SWISS
teensyLC.menu.keys.is-is=Icelandic
teensyLC.menu.keys.is-is.build.keylayout=ICELANDIC
teensyLC.menu.keys.en-ie=Irish
teensyLC.menu.keys.en-ie.build.keylayout=IRISH
teensyLC.menu.keys.it-it=Italian
teensyLC.menu.keys.it-it.build.keylayout=ITALIAN
teensyLC.menu.keys.no-no=Norwegian
teensyLC.menu.keys.no-no.build.keylayout=NORWEGIAN
teensyLC.menu.keys.pt-pt=Portuguese
teensyLC.menu.keys.pt-pt.build.keylayout=PORTUGUESE
teensyLC.menu.keys.pt-br=Portuguese Brazilian
teensyLC.menu.keys.pt-br.build.keylayout=PORTUGUESE_BRAZILIAN
teensyLC.menu.keys.rs-rs=Serbian (Latin Only)
teensyLC.menu.keys.rs-rs.build.keylayout=SERBIAN_LATIN_ONLY
teensyLC.menu.keys.es-es=Spanish
teensyLC.menu.keys.es-es.build.keylayout=SPANISH
teensyLC.menu.keys.es-mx=Spanish Latin America
teensyLC.menu.keys.es-mx.build.keylayout=SPANISH_LATIN_AMERICA
teensyLC.menu.keys.sv-se=Swedish
teensyLC.menu.keys.sv-se.build.keylayout=SWEDISH
teensyLC.menu.keys.tr-tr=Turkish (partial)
teensyLC.menu.keys.tr-tr.build.keylayout=TURKISH
teensyLC.menu.keys.en-gb=United Kingdom
teensyLC.menu.keys.en-gb.build.keylayout=UNITED_KINGDOM
teensyLC.menu.keys.usint=US International
teensyLC.menu.keys.usint.build.keylayout=US_INTERNATIONAL


teensypp2.name=Teensy++ 2.0
teensypp2.upload.maximum_size=130048
teensypp2.upload.maximum_data_size=8192
teensypp2.upload.tool=teensyloader
teensypp2.upload.protocol=halfkay
teensypp2.build.board=TEENSY2PP
teensypp2.build.core=teensy
teensypp2.build.mcu=at90usb1286
teensypp2.build.warn_data_percentage=94
teensypp2.build.toolchain=avr/bin/
teensypp2.build.command.gcc=avr-gcc
teensypp2.build.command.g++=avr-g++
teensypp2.build.command.ar=avr-ar
teensypp2.build.command.objcopy=avr-objcopy
teensypp2.build.command.objdump=avr-objdump
teensypp2.build.command.linker=avr-gcc
teensypp2.build.command.size=avr-size
teensypp2.build.flags.common=-g -Wall -ffunction-sections -fdata-sections
teensypp2.build.flags.dep=-MMD
teensypp2.build.flags.optimize=-Os
teensypp2.build.flags.cpu=-mmcu=at90usb1286
teensypp2.build.flags.defs=-DTEENSYDUINO=149 -DARDUINO_ARCH_AVR
teensypp2.build.flags.cpp=-fno-exceptions -fpermissive -felide-constructors -std=gnu++11
teensypp2.build.flags.c=
teensypp2.build.flags.S=-x assembler-with-cpp
teensypp2.build.flags.ld=-Wl,--gc-sections,--relax
teensypp2.build.flags.ldspecs=
teensypp2.build.flags.libs=-lm
teensypp2.build.serial_number=true
teensypp2.serial.restart_cmd=true

teensypp2.menu.usb.serial=Serial
teensypp2.menu.usb.serial.build.usbtype=USB_SERIAL
teensypp2.menu.usb.hid=Keyboard + Mouse + Joystick
teensypp2.menu.usb.hid.build.usbtype=USB_HID
teensypp2.menu.usb.hid.fake_serial=teensy_gateway
teensypp2.menu.usb.serialhid=Serial + Keyboard + Mouse + Joystick
teensypp2.menu.usb.serialhid.build.usbtype=USB_SERIAL_HID
teensypp2.menu.usb.int_disk=Disk(Internal) + Keyboard
teensypp2.menu.usb.int_disk.build.usbtype=USB_DISK
teensypp2.menu.usb.int_disk.fake_serial=teensy_gateway
teensypp2.menu.usb.int_disk.build.elfpatch=mktinyfat
teensypp2.menu.usb.sd_disk=Disk(SD Card) + Keyboard
teensypp2.menu.usb.sd_disk.build.usbtype=USB_DISK_SDFLASH
teensypp2.menu.usb.sd_disk.fake_serial=teensy_gateway
teensypp2.menu.usb.midi=MIDI
teensypp2.menu.usb.midi.build.usbtype=USB_MIDI
teensypp2.menu.usb.midi.fake_serial=teensy_gateway
teensypp2.menu.usb.rawhid=Raw HID
teensypp2.menu.usb.rawhid.build.usbtype=USB_RAWHID
teensypp2.menu.usb.rawhid.fake_serial=teensy_gateway
teensypp2.menu.usb.flightsim=Flight Sim Controls
teensypp2.menu.usb.flightsim.build.usbtype=USB_FLIGHTSIM
teensypp2.menu.usb.flightsim.fake_serial=teensy_gateway
teensypp2.menu.speed.16=16 MHz
teensypp2.menu.speed.8=8 MHz
teensypp2.menu.speed.4=4 MHz
teensypp2.menu.speed.2=2 MHz
teensypp2.menu.speed.1=1 MHz
teensypp2.menu.speed.16.build.fcpu=16000000L
teensypp2.menu.speed.8.build.fcpu=8000000L
teensypp2.menu.speed.4.build.fcpu=4000000L
teensypp2.menu.speed.2.build.fcpu=2000000L
teensypp2.menu.speed.1.build.fcpu=1000000L

teensypp2.menu.keys.en-us=US English
teensypp2.menu.keys.en-us.build.keylayout=US_ENGLISH
teensypp2.menu.keys.fr-ca=Canadian French
teensypp2.menu.keys.fr-ca.build.keylayout=CANADIAN_FRENCH
teensypp2.menu.keys.xx-ca=Canadian Multilingual
teensypp2.menu.keys.xx-ca.build.keylayout=CANADIAN_MULTILINGUAL
teensypp2.menu.keys.cz-cz=Czech
teensypp2.menu.keys.cz-cz.build.keylayout=CZECH
teensypp2.menu.keys.da-da=Danish
teensypp2.menu.keys.da-da.build.keylayout=DANISH
teensypp2.menu.keys.fi-fi=Finnish
teensypp2.menu.keys.fi-fi.build.keylayout=FINNISH
teensypp2.menu.keys.fr-fr=French
teensypp2.menu.keys.fr-fr.build.keylayout=FRENCH
teensypp2.menu.keys.fr-be=French Belgian
teensypp2.menu.keys.fr-be.build.keylayout=FRENCH_BELGIAN
teensypp2.menu.keys.fr-ch=French Swiss
teensypp2.menu.keys.fr-ch.build.keylayout=FRENCH_SWISS
teensypp2.menu.keys.de-de=German
teensypp2.menu.keys.de-de.build.keylayout=GERMAN
teensypp2.menu.keys.de-dm=German (Mac)
teensypp2.menu.keys.de-dm.build.keylayout=GERMAN_MAC
teensypp2.menu.keys.de-ch=German Swiss
teensypp2.menu.keys.de-ch.build.keylayout=GERMAN_SWISS
teensypp2.menu.keys.is-is=Icelandic
teensypp2.menu.keys.is-is.build.keylayout=ICELANDIC
teensypp2.menu.keys.en-ie=Irish
teensypp2.menu.keys.en-ie.build.keylayout=IRISH
teensypp2.menu.keys.it-it=Italian
teensypp2.menu.keys.it-it.build.keylayout=ITALIAN
teensypp2.menu.keys.no-no=Norwegian
teensypp2.menu.keys.no-no.build.keylayout=NORWEGIAN
teensypp2.menu.keys.pt-pt=Portuguese
teensypp2.menu.keys.pt-pt.build.keylayout=PORTUGUESE
teensypp2.menu.keys.pt-br=Portuguese Brazilian
teensypp2.menu.keys.pt-br.build.keylayout=PORTUGUESE_BRAZILIAN
teensypp2.menu.keys.rs-rs=Serbian (Latin Only)
teensypp2.menu.keys.rs-rs.build.keylayout=SERBIAN_LATIN_ONLY
teensypp2.menu.keys.es-es=Spanish
teensypp2.menu.keys.es-es.build.keylayout=SPANISH
teensypp2.menu.keys.es-mx=Spanish Latin America
teensypp2.menu.keys.es-mx.build.keylayout=SPANISH_LATIN_AMERICA
teensypp2.menu.keys.sv-se=Swedish
teensypp2.menu.keys.sv-se.build.keylayout=SWEDISH
teensypp2.menu.keys.tr-tr=Turkish (partial)
teensypp2.menu.keys.tr-tr.build.keylayout=TURKISH
teensypp2.menu.keys.en-gb=United Kingdom
teensypp2.menu.keys.en-gb.build.keylayout=UNITED_KINGDOM
teensypp2.menu.keys.usint=US International
teensypp2.menu.keys.usint.build.keylayout=US_INTERNATIONAL


teensy2.name=Teensy 2.0
teensy2.upload.maximum_size=32256
teensy2.upload.maximum_data_size=2560
teensy2.upload.tool=teensyloader
teensy2.upload.protocol=halfkay
teensy2.build.board=TEENSY2
teensy2.build.core=teensy
teensy2.build.mcu=atmega32u4
teensy2.build.warn_data_percentage=80
teensy2.build.toolchain=avr/bin/
teensy2.build.command.gcc=avr-gcc
teensy2.build.command.g++=avr-g++
teensy2.build.command.ar=avr-ar
teensy2.build.command.objcopy=avr-objcopy
teensy2.build.command.objdump=avr-objdump
teensy2.build.command.linker=avr-gcc
teensy2.build.command.size=avr-size
teensy2.build.flags.common=-g -Wall -ffunction-sections -fdata-sections
teensy2.build.flags.dep=-MMD
teensy2.build.flags.optimize=-Os
teensy2.build.flags.cpu=-mmcu=atmega32u4
teensy2.build.flags.defs=-DTEENSYDUINO=149 -DARDUINO_ARCH_AVR
teensy2.build.flags.cpp=-fno-exceptions -fpermissive -felide-constructors -std=gnu++11
teensy2.build.flags.c=
teensy2.build.flags.S=-x assembler-with-cpp
teensy2.build.flags.ld=-Wl,--gc-sections,--relax
teensy2.build.flags.ldspecs=
teensy2.build.flags.libs=-lm
teensy2.build.serial_number=true
teensy2.serial.restart_cmd=true

teensy2.menu.usb.serial=Serial
teensy2.menu.usb.serial.build.usbtype=USB_SERIAL
teensy2.menu.usb.hid=Keyboard + Mouse + Joystick
teensy2.menu.usb.hid.build.usbtype=USB_HID
teensy2.menu.usb.hid.fake_serial=teensy_gateway
teensy2.menu.usb.serialhid=Serial + Keyboard + Mouse + Joystick
teensy2.menu.usb.serialhid.build.usbtype=USB_SERIAL_HID
teensy2.menu.usb.int_disk=Disk(Internal) + Keyboard
teensy2.menu.usb.int_disk.build.usbtype=USB_DISK
teensy2.menu.usb.int_disk.fake_serial=teensy_gateway
teensy2.menu.usb.int_disk.build.elfpatch=mktinyfat
teensy2.menu.usb.sd_disk=Disk(SD Card) + Keyboard
teensy2.menu.usb.sd_disk.build.usbtype=USB_DISK_SDFLASH
teensy2.menu.usb.sd_disk.fake_serial=teensy_gateway
teensy2.menu.usb.midi=MIDI
teensy2.menu.usb.midi.build.usbtype=USB_MIDI
teensy2.menu.usb.midi.fake_serial=teensy_gateway
teensy2.menu.usb.rawhid=Raw HID
teensy2.menu.usb.rawhid.build.usbtype=USB_RAWHID
teensy2.menu.usb.rawhid.fake_serial=teensy_gateway
teensy2.menu.usb.flightsim=Flight Sim Controls
teensy2.menu.usb.flightsim.build.usbtype=USB_FLIGHTSIM
teensy2.menu.usb.flightsim.fake_serial=teensy_gateway
teensy2.menu.speed.16=16 MHz
teensy2.menu.speed.8=8 MHz
teensy2.menu.speed.4=4 MHz
teensy2.menu.speed.2=2 MHz
teensy2.menu.speed.1=1 MHz
teensy2.menu.speed.16.build.fcpu=16000000L
teensy2.menu.speed.8.build.fcpu=8000000L
teensy2.menu.speed.4.build.fcpu=4000000L
teensy2.menu.speed.2.build.fcpu=2000000L
teensy2.menu.speed.1.build.fcpu=1000000L

teensy2.menu.keys.en-us=US English
teensy2.menu.keys.en-us.build.keylayout=US_ENGLISH
teensy2.menu.keys.fr-ca=Canadian French
teensy2.menu.keys.fr-ca.build.keylayout=CANADIAN_FRENCH
teensy2.menu.keys.xx-ca=Canadian Multilingual
teensy2.menu.keys.xx-ca.build.keylayout=CANADIAN_MULTILINGUAL
teensy2.menu.keys.cz-cz=Czech
teensy2.menu.keys.cz-cz.build.keylayout=CZECH
teensy2.menu.keys.da-da=Danish
teensy2.menu.keys.da-da.build.keylayout=DANISH
teensy2.menu.keys.fi-fi=Finnish
teensy2.menu.keys.fi-fi.build.keylayout=FINNISH
teensy2.menu.keys.fr-fr=French
teensy2.menu.keys.fr-fr.build.keylayout=FRENCH
teensy2.menu.keys.fr-be=French Belgian
teensy2.menu.keys.fr-be.build.keylayout=FRENCH_BELGIAN
teensy2.menu.keys.fr-ch=French Swiss
teensy2.menu.keys.fr-ch.build.keylayout=FRENCH_SWISS
teensy2.menu.keys.de-de=German
teensy2.menu.keys.de-de.build.keylayout=GERMAN
teensy2.menu.keys.de-dm=German (Mac)
teensy2.menu.keys.de-dm.build.keylayout=GERMAN_MAC
teensy2.menu.keys.de-ch=German Swiss
teensy2.menu.keys.de-ch.build.keylayout=GERMAN_SWISS
teensy2.menu.keys.is-is=Icelandic
teensy2.menu.keys.is-is.build.keylayout=ICELANDIC
teensy2.menu.keys.en-ie=Irish
teensy2.menu.keys.en-ie.build.keylayout=IRISH
teensy2.menu.keys.it-it=Italian
teensy2.menu.keys.it-it.build.keylayout=ITALIAN
teensy2.menu.keys.no-no=Norwegian
teensy2.menu.keys.no-no.build.keylayout=NORWEGIAN
teensy2.menu.keys.pt-pt=Portuguese
teensy2.menu.keys.pt-pt.build.keylayout=PORTUGUESE
teensy2.menu.keys.pt-br=Portuguese Brazilian
teensy2.menu.keys.pt-br.build.keylayout=PORTUGUESE_BRAZILIAN
teensy2.menu.keys.rs-rs=Serbian (Latin Only)
teensy2.menu.keys.rs-rs.build.keylayout=SERBIAN_LATIN_ONLY
teensy2.menu.keys.es-es=Spanish
teensy2.menu.keys.es-es.build.keylayout=SPANISH
teensy2.menu.keys.es-mx=Spanish Latin America
teensy2.menu.keys.es-mx.build.keylayout=SPANISH_LATIN_AMERICA
teensy2.menu.keys.sv-se=Swedish
teensy2.menu.keys.sv-se.build.keylayout=SWEDISH
teensy2.menu.keys.tr-tr=Turkish (partial)
teensy2.menu.keys.tr-tr.build.keylayout=TURKISH
teensy2.menu.keys.en-gb=United Kingdom
teensy2.menu.keys.en-gb.build.keylayout=UNITED_KINGDOM
teensy2.menu.keys.usint=US International
teensy2.menu.keys.usint.build.keylayout=US_INTERNATIONAL

Edit:
MTP_Storage.h and MTP.h
from
Code:
#if !defined(USB_MTPDISK)
  #error "You need to select USB Type: 'MTP Disk (Experimental)'"
#endif
to
Code:
#if !defined(USB_MTPDISK) && !defined(USB_MTPDISK_SERIAL)
#error "You need to select USB Type: 'MTP Disk (Experimental)' or 'MTP Disk (Experimental) + Serial'"
#endif
 
Last edited:
Teensy 4, ide 1.8.10, teensyduino 1.49. The pc is running ubuntu 18.04. Unfortunately, Serial doesn't work in mtp experimental mode. Is there another way to get the logs?

T4 version uses Pauls debug printf to Serial4. For this you have to uncomment core/teensy4/debug/printf.h " #define PRINT_DEBUG_STUFF"
(I´m fortuned to have a Breakoutboard that exposes Serial4-
 
FYI: I downloaded the trial MTPdrive - scanned and it looked clean. And installed.

It starts up looking good showing the Teensy as as "Teensy (#???)" - but the UI to associate a drive letter { Z: and Y: } was hinky - failed - spawned a second instance - that repeated.

Then the UI shows Teensy on X: in its list, and X: appeared in a dos box:
Code:
C:\WINDOWS\system32>x:

X:\>dir
 Volume in drive X is Teensy [SD Card] @ MTPdrive(TRIAL)
 Volume Serial Number is 600D-CAFE

 Directory of X:\

01/26/2020  03:27 AM                 0 mtpindex.dat
01/26/2020  03:27 AM       200,000,000 benchB.dat
01/26/2020  03:27 AM               484 ll.txt
01/26/2020  03:27 AM             1,452 ll.txt
01/26/2020  03:27 AM    <DIR>          New Folder
01/26/2020  03:27 AM    <DIR>          System Volume Information
               4 File(s)    200,001,936 bytes
               2 Dir(s)  31,520,652,800 bytes free

X:\>dir x: > x:ll.txt

X:\>type ll.txt
A device attached to the system is not functioning.

X:\>type ll.txt
A device attached to the system is not functioning.

X:\>notepad ll.txt

X:\>

Note sure if this is the MTPdrive software being LAME or the Teensy failing to interact as expected?
> It won't TYPE the file
> I do see it now in File Explorer, and double click on ll.txt opened the file as does above "notepad ll.txt"
> but ll.txt doesn't have a SINGLE copy of the directory - it has THREE copies?
> I repeated dir into another file and it holds FOUR copies of the directory

Note sure if there are meaningful details - but MTPdrive creates a LOG that shows "???" for Serial # below:
Code:
DEVICE
WPD_OBJECT_ID: "DEVICE"
WPD_OBJECT_PARENT_ID: ""
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT
WPD_FUNCTIONAL_OBJECT_CATEGORY: WPD_FUNCTIONAL_CATEGORY_DEVICE
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "DEVICE"
WPD_OBJECT_CAN_DELETE: FALSE
WPD_OBJECT_ISHIDDEN: TRUE
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_DEVICE_PROTOCOL: "MSC:"
WPD_DEVICE_FRIENDLY_NAME: "E:\"
WPD_DEVICE_POWER_SOURCE: 1
WPD_DEVICE_POWER_LEVEL: 100
WPD_DEVICE_TYPE: 0
WPD_DEVICE_SERIAL_NUMBER: "058F63626479"
WPD_DEVICE_MANUFACTURER: "Generic-"
WPD_DEVICE_MODEL: "Compact Flash   "
WPD_DEVICE_FIRMWARE_VERSION: "1.01"

DEVICE
WPD_OBJECT_ID: "DEVICE"
WPD_OBJECT_PARENT_ID: ""
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT
WPD_FUNCTIONAL_OBJECT_CATEGORY: WPD_FUNCTIONAL_CATEGORY_DEVICE
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "DEVICE"
WPD_OBJECT_CAN_DELETE: FALSE
WPD_OBJECT_ISHIDDEN: TRUE
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_DEVICE_PROTOCOL: "MSC:"
WPD_DEVICE_FRIENDLY_NAME: "F:\"
WPD_DEVICE_POWER_SOURCE: 1
WPD_DEVICE_POWER_LEVEL: 100
WPD_DEVICE_TYPE: 0
WPD_DEVICE_SERIAL_NUMBER: "058F63626479"
WPD_DEVICE_MANUFACTURER: "Generic-"
WPD_DEVICE_MODEL: "SD/MMC          "
WPD_DEVICE_FIRMWARE_VERSION: "1.00"

DEVICE
WPD_OBJECT_ID: "DEVICE"
WPD_OBJECT_PARENT_ID: ""
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT
WPD_FUNCTIONAL_OBJECT_CATEGORY: WPD_FUNCTIONAL_CATEGORY_DEVICE
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "DEVICE"
WPD_OBJECT_CAN_DELETE: FALSE
WPD_OBJECT_ISHIDDEN: TRUE
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_DEVICE_PROTOCOL: "MSC:"
WPD_DEVICE_FRIENDLY_NAME: "J:\"
WPD_DEVICE_POWER_SOURCE: 1
WPD_DEVICE_POWER_LEVEL: 100
WPD_DEVICE_TYPE: 0
WPD_DEVICE_SERIAL_NUMBER: "058F63626479"
WPD_DEVICE_MANUFACTURER: "Generic-"
WPD_DEVICE_MODEL: "xD-Picture      "
WPD_DEVICE_FIRMWARE_VERSION: "1.02"

DEVICE
WPD_OBJECT_ID: "DEVICE"
WPD_OBJECT_PARENT_ID: ""
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT
WPD_FUNCTIONAL_OBJECT_CATEGORY: WPD_FUNCTIONAL_CATEGORY_DEVICE
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "DEVICE"
WPD_OBJECT_CAN_DELETE: FALSE
WPD_OBJECT_ISHIDDEN: TRUE
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_DEVICE_PROTOCOL: "MSC:"
WPD_DEVICE_FRIENDLY_NAME: "G:\"
WPD_DEVICE_POWER_SOURCE: 1
WPD_DEVICE_POWER_LEVEL: 100
WPD_DEVICE_TYPE: 0
WPD_DEVICE_SERIAL_NUMBER: "058F63626479"
WPD_DEVICE_MANUFACTURER: "Generic-"
WPD_DEVICE_MODEL: "MS/MS-PRO       "
WPD_DEVICE_FIRMWARE_VERSION: "1.03"

DEVICE
WPD_OBJECT_ID: "DEVICE"
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "DEVICE"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "DEVICE"
WPD_OBJECT_PARENT_ID: ""
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT
WPD_FUNCTIONAL_OBJECT_CATEGORY: WPD_FUNCTIONAL_CATEGORY_DEVICE
WPD_OBJECT_CAN_DELETE: FALSE
WPD_DEVICE_FIRMWARE_VERSION: "1.0"
WPD_DEVICE_PROTOCOL: "MTP: 1.00"
WPD_DEVICE_MANUFACTURER: "PJRC"
WPD_DEVICE_MODEL: "Teensy"
WPD_OBJECT_NAME: "Teensy"
WPD_DEVICE_SUPPORTS_NON_CONSUMABLE: FALSE
[COLOR="#FF0000"]WPD_DEVICE_SERIAL_NUMBER: "???"[/COLOR]
WPD_DEVICE_TYPE: 0
WPD_DEVICE_TRANSPORT: 1
WPD_DEVICE_POWER_SOURCE: 0
WPD_DEVICE_FRIENDLY_NAME: "Teensy"

  s1
WPD_STORAGE_TYPE: 4
WPD_STORAGE_FILE_SYSTEM_TYPE: "Generic hierarchical"
WPD_STORAGE_ACCESS_CAPABILITY: 0
WPD_STORAGE_CAPACITY: 31902400512
WPD_STORAGE_FREE_SPACE_IN_BYTES: 31520718848
WPD_STORAGE_FREE_SPACE_IN_OBJECTS: E_ERROR_NOT_FOUND
WPD_STORAGE_DESCRIPTION: "SD Card"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "SID-{1,,31902400512}"
WPD_OBJECT_NAME: "SD Card"
WPD_STORAGE_SERIAL_NUMBER: ""
WPD_OBJECT_ID: "s1"
WPD_OBJECT_PARENT_ID: "DEVICE"
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_OBJECT_CAN_DELETE: FALSE
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT
WPD_FUNCTIONAL_OBJECT_CATEGORY: WPD_FUNCTIONAL_CATEGORY_STORAGE
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "s1"

DEVICE
WPD_OBJECT_ID: "DEVICE"
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "DEVICE"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "DEVICE"
WPD_OBJECT_PARENT_ID: ""
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT
WPD_FUNCTIONAL_OBJECT_CATEGORY: WPD_FUNCTIONAL_CATEGORY_DEVICE
WPD_OBJECT_CAN_DELETE: FALSE
WPD_DEVICE_FIRMWARE_VERSION: "1.0"
WPD_DEVICE_PROTOCOL: "MTP: 1.00"
WPD_DEVICE_MANUFACTURER: "PJRC"
WPD_DEVICE_MODEL: "Teensy"
WPD_OBJECT_NAME: "Teensy"
WPD_DEVICE_SUPPORTS_NON_CONSUMABLE: FALSE
[COLOR="#FF0000"]WPD_DEVICE_SERIAL_NUMBER: "???"[/COLOR]
WPD_DEVICE_TYPE: 0
WPD_DEVICE_TRANSPORT: 1
WPD_DEVICE_POWER_SOURCE: 0
WPD_DEVICE_FRIENDLY_NAME: "Teensy"

DEVICE
WPD_OBJECT_ID: "DEVICE"
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "DEVICE"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "DEVICE"
WPD_OBJECT_PARENT_ID: ""
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT
WPD_FUNCTIONAL_OBJECT_CATEGORY: WPD_FUNCTIONAL_CATEGORY_DEVICE
WPD_OBJECT_CAN_DELETE: FALSE
WPD_DEVICE_FIRMWARE_VERSION: "1.0"
WPD_DEVICE_PROTOCOL: "MTP: 1.00"
WPD_DEVICE_MANUFACTURER: "PJRC"
WPD_DEVICE_MODEL: "Teensy"
WPD_OBJECT_NAME: "Teensy"
WPD_DEVICE_SUPPORTS_NON_CONSUMABLE: FALSE
[COLOR="#FF0000"]WPD_DEVICE_SERIAL_NUMBER: "???"[/COLOR]
WPD_DEVICE_TYPE: 0
WPD_DEVICE_TRANSPORT: 1
WPD_DEVICE_POWER_SOURCE: 0
WPD_DEVICE_FRIENDLY_NAME: "Teensy"

  s1
WPD_STORAGE_TYPE: 4
WPD_STORAGE_FILE_SYSTEM_TYPE: "Generic hierarchical"
WPD_STORAGE_ACCESS_CAPABILITY: 0
WPD_STORAGE_CAPACITY: 31902400512
WPD_STORAGE_FREE_SPACE_IN_BYTES: 31520718848
WPD_STORAGE_FREE_SPACE_IN_OBJECTS: E_ERROR_NOT_FOUND
WPD_STORAGE_DESCRIPTION: "SD Card"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "SID-{1,,31902400512}"
WPD_OBJECT_NAME: "SD Card"
WPD_STORAGE_SERIAL_NUMBER: ""
WPD_OBJECT_ID: "s1"
WPD_OBJECT_PARENT_ID: "DEVICE"
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_OBJECT_CAN_DELETE: FALSE
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT
WPD_FUNCTIONAL_OBJECT_CATEGORY: WPD_FUNCTIONAL_CATEGORY_STORAGE
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "s1"

    o4
WPD_OBJECT_ID: "o4"
WPD_OBJECT_DATE_CREATED: E_ERROR_NOT_FOUND
WPD_OBJECT_PARENT_ID: "s1"
WPD_OBJECT_DATE_MODIFIED: E_ERROR_NOT_FOUND
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FOLDER
WPD_OBJECT_NAME: "New Folder"
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "s4"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "{00000004-0000-0000-0100-000000000000}"
WPD_OBJECT_SIZE: 0
WPD_OBJECT_CAN_DELETE: TRUE
WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS: 0
WPD_OBJECT_ORIGINAL_FILE_NAME: "New Folder"

    o3
WPD_OBJECT_ID: "o3"
WPD_OBJECT_DATE_CREATED: E_ERROR_NOT_FOUND
WPD_OBJECT_PARENT_ID: "s1"
WPD_OBJECT_DATE_MODIFIED: E_ERROR_NOT_FOUND
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_UNSPECIFIED
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_UNSPECIFIED
WPD_OBJECT_NAME: "mtpindex.dat"
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "s3"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "{00000003-0000-0000-0100-000000000000}"
WPD_OBJECT_SIZE: 0
WPD_OBJECT_CAN_DELETE: TRUE
WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS: 0
WPD_OBJECT_ORIGINAL_FILE_NAME: "mtpindex.dat"

    o2
WPD_OBJECT_ID: "o2"
WPD_OBJECT_DATE_CREATED: E_ERROR_NOT_FOUND
WPD_OBJECT_PARENT_ID: "s1"
WPD_OBJECT_DATE_MODIFIED: E_ERROR_NOT_FOUND
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_UNSPECIFIED
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_UNSPECIFIED
WPD_OBJECT_NAME: "benchB.dat"
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "s2"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "{00000002-0000-0000-0100-000000000000}"
WPD_OBJECT_SIZE: 200000000
WPD_OBJECT_CAN_DELETE: TRUE
WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS: 0
WPD_OBJECT_ORIGINAL_FILE_NAME: "benchB.dat"

    o1
WPD_OBJECT_ID: "o1"
WPD_OBJECT_DATE_CREATED: E_ERROR_NOT_FOUND
WPD_OBJECT_PARENT_ID: "s1"
WPD_OBJECT_DATE_MODIFIED: E_ERROR_NOT_FOUND
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_PROPERTIES_ONLY
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_FOLDER
WPD_OBJECT_NAME: "System Volume Information"
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "s1"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "{00000001-0000-0000-0100-000000000000}"
WPD_OBJECT_SIZE: 0
WPD_OBJECT_CAN_DELETE: TRUE
WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS: 0
WPD_OBJECT_ORIGINAL_FILE_NAME: "System Volume Information"

      o6
WPD_OBJECT_ID: "o6"
WPD_OBJECT_DATE_CREATED: E_ERROR_NOT_FOUND
WPD_OBJECT_PARENT_ID: "o1"
WPD_OBJECT_DATE_MODIFIED: E_ERROR_NOT_FOUND
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_UNSPECIFIED
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_UNSPECIFIED
WPD_OBJECT_NAME: "IndexerVolumeGuid"
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "s6"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "{00000006-0001-0000-0100-000000000000}"
WPD_OBJECT_SIZE: 76
WPD_OBJECT_CAN_DELETE: TRUE
WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS: 0
WPD_OBJECT_ORIGINAL_FILE_NAME: "IndexerVolumeGuid"

      o5
WPD_OBJECT_ID: "o5"
WPD_OBJECT_DATE_CREATED: E_ERROR_NOT_FOUND
WPD_OBJECT_PARENT_ID: "o1"
WPD_OBJECT_DATE_MODIFIED: E_ERROR_NOT_FOUND
WPD_OBJECT_FORMAT: WPD_OBJECT_FORMAT_UNSPECIFIED
WPD_OBJECT_CONTENT_TYPE: WPD_CONTENT_TYPE_UNSPECIFIED
WPD_OBJECT_NAME: "WPSettings.dat"
WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID: "s5"
WPD_OBJECT_PERSISTENT_UNIQUE_ID: "{00000005-0001-0000-0100-000000000000}"
WPD_OBJECT_SIZE: 12
WPD_OBJECT_CAN_DELETE: TRUE
WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS: 0
WPD_OBJECT_ORIGINAL_FILE_NAME: "WPSettings.dat"


\SD Card\New Folder -> {00000004-0000-0000-0100-000000000000}
\SD Card\mtpindex.dat -> {00000003-0000-0000-0100-000000000000}
\SD Card\benchB.dat -> {00000002-0000-0000-0100-000000000000}
\SD Card\System Volume Information -> {00000001-0000-0000-0100-000000000000}
\SD Card\System Volume Information\IndexerVolumeGuid -> {00000006-0001-0000-0100-000000000000}
\SD Card\System Volume Information\WPSettings.dat -> {00000005-0001-0000-0100-000000000000}
 
Arduino-1.8.10
Teensyduino 1.49
So I've been playing around some more with Native Serial support (COMx port), can anyone test this:
Yes, faking a usb everything is working and similar to the fake midi I was using in other thread.
For smooth download we need from Paul a new product-id that teensyduino recognizes.
BTW, latest GitHub (as of now) is already modified for USB_DISK_SERIAL on T4. need now to see T3
only additional action is adding the two lines in boards.txt (added to Readme)
 
FYI: I downloaded the trial MTPdrive - scanned and it looked clean. And installed.

It starts up looking good showing the Teensy as as "Teensy (#???)" - but the UI to associate a drive letter { Z: and Y: } was hinky - failed - spawned a second instance - that repeated.

The "???" is from the original code and send by Teensy. Not sure with what to replace. must read more on MTP document.
Note what is not yet implemented is Date and Time (was also not in original implementation (that is work-to-be-done))

Yes, I remember now, copying from PC to Teensy had always an issue: new information seemed appended and file not truncated.
Have not checked that with actual version.
Edit: all files are created with "FILE_WRITE" i.e. "(O_RDWR | O_CREAT | O_AT_END)"
Edit: it also seems the File explorer first deletes old file before copying same file (ask you to overwrite)
 
The "???" is from the original code and send by Teensy. Not sure with what to replace. must read more on MTP document.
Note what is not yet implemented is Date and Time (was also not in original implementation (that is work-to-be-done))

Yes, I remember now, copying from PC to Teensy had always an issue: new information seemed appended and file not truncated.
Have not checked that with actual version.
Edit: all files are created with "FILE_WRITE" i.e. "(O_RDWR | O_CREAT | O_AT_END)"
Edit: it also seems the File explorer first deletes old file before copying same file (ask you to overwrite)

Should this work in : usb_string_serial_number_default.wString

Those "DIR >" were to NEW files? - unless file was closed and opened for each packet? I didn't stare at contents - funny looking repeats with edits.

This is from " Dir > forum.txt " - it looks like the prior data from two " Dir > ll.txt " are pre-prended? But 'forum.txt' is in last two entries. I did hit "Dir > ll.txt" twice so went to new file forum.txt.
Code:
 Volume in drive X is Teensy [SD Card] @ MTPdrive(TRIAL)
 Volume Serial Number is 600D-CAFE

 Directory of X:\

01/26/2020  03:27 AM                 0 mtpindex.dat
01/26/2020  03:27 AM       200,000,000 benchB.dat
01/26/2020  03:27 AM                 0 ll.txt
01/26/2020  03:27 AM    <DIR>          New Folder
01/26/2020  03:27 AM    <DIR>          System Volume Information
               3 File(s)    200,000,000 bytes
               2 Dir(s)  31,520,718,336 bytes free
 Volume in drive X is Teensy [SD Card] @ MTPdrive(TRIAL)
 Volume Serial Number is 600D-CAFE

 Directory of X:\

01/26/2020  03:27 AM                 0 mtpindex.dat
01/26/2020  03:27 AM       200,000,000 benchB.dat
01/26/2020  03:27 AM                 0 ll.txt
01/26/2020  03:27 AM    <DIR>          New Folder
01/26/2020  03:27 AM    <DIR>          System Volume Information
               3 File(s)    200,000,000 bytes
               2 Dir(s)  31,520,718,336 bytes free
 Volume in drive X is Teensy [SD Card] @ MTPdrive(TRIAL)
 Volume Serial Number is 600D-CAFE

 Directory of X:\

01/26/2020  03:27 AM                 0 mtpindex.dat
01/26/2020  03:27 AM       200,000,000 benchB.dat
01/26/2020  03:27 AM               484 ll.txt
01/26/2020  03:27 AM             1,452 ll.txt
01/26/2020  03:27 AM    <DIR>          New Folder
01/26/2020  03:27 AM    <DIR>          System Volume Information
               4 File(s)    200,001,936 bytes
      Volume in drive X is Teensy [SD Card] @ MTPdrive(TRIAL)
 Volume Serial Number is 600D-CAFE

 Directory of X:\

01/26/2020  03:27 AM                 0 mtpindex.dat
01/26/2020  03:27 AM       200,000,000 benchB.dat
01/26/2020  03:27 AM                 0 forum.txt
01/26/2020  03:27 AM             1,452 ll.txt
01/26/2020  03:27 AM    <DIR>          New Folder
01/26/2020  03:27 AM    <DIR>          System Volume Information
               4 File(s)    200,001,452 bytes
               2 Dir(s)  31,520,652,800 bytes free
 Volume in drive X is Teensy [SD Card] @ MTPdrive(TRIAL)
 Volume Serial Number is 600D-CAFE

 Directory of X:\

01/26/2020  03:27 AM                 0 mtpindex.dat
01/26/2020  03:27 AM       200,000,000 benchB.dat
01/26/2020  03:27 AM                 0 ll.txt
01/26/2020  03:27 AM    <DIR>          New Folder
01/26/2020  03:27 AM    <DIR>          System Volume Information
               3 File(s)    200,000,000 bytes
               2 Dir(s)  31,520,718,336 bytes free
 Volume in drive X is Teensy [SD Card] @ MTPdrive(TRIAL)
 Volume Serial Number is 600D-CAFE

 Directory of X:\

01/26/2020  03:27 AM                 0 mtpindex.dat
01/26/2020  03:27 AM       200,000,000 benchB.dat
01/26/2020  03:27 AM                 0 ll.txt
01/26/2020  03:27 AM    <DIR>          New Folder
01/26/2020  03:27 AM    <DIR>          System Volume Information
               3 File(s)    200,000,000 bytes
               2 Dir(s)  31,520,718,336 bytes free
 Volume in drive X is Teensy [SD Card] @ MTPdrive(TRIAL)
 Volume Serial Number is 600D-CAFE

 Directory of X:\

01/26/2020  03:27 AM                 0 mtpindex.dat
01/26/2020  03:27 AM       200,000,000 benchB.dat
01/26/2020  03:27 AM               484 ll.txt
01/26/2020  03:27 AM             1,452 ll.txt
01/26/2020  03:27 AM    <DIR>          New Folder
01/26/2020  03:27 AM    <DIR>          System Volume Information
               4 File(s)    200,001,936 bytes
      Volume in drive X is Teensy [SD Card] @ MTPdrive(TRIAL)
 Volume Serial Number is 600D-CAFE

 Directory of X:\

01/26/2020  03:27 AM                 0 mtpindex.dat
01/26/2020  03:27 AM       200,000,000 benchB.dat
01/26/2020  03:27 AM                 0 forum.txt
01/26/2020  03:27 AM             1,452 ll.txt
01/26/2020  03:27 AM    <DIR>          New Folder
01/26/2020  03:27 AM    <DIR>          System Volume Information
               4 File(s)    200,001,452 bytes
               2 Dir(s)  31,520,652,800 bytes free
 Volume in drive X is Teensy [SD Card] @ MTPdrive(TRIAL)
 Volume Serial Number is 600D-CAFE

 Directory of X:\

01/26/2020  03:27 AM                 0 mtpindex.dat
01/26/2020  03:27 AM       200,000,000 benchB.dat
01/26/2020  03:27 AM                 0 forum.txt
01/26/2020  03:27 AM             1,452 ll.txt
01/26/2020  03:27 AM    <DIR>          New Folder
01/26/2020  03:27 AM    <DIR>          System Volume Information
               4 File(s)    200,001,452 bytes
               2 Dir(s)  31,520,652,800 bytes free
 
I updated GitHub to include also new files for Teensy3 and boards.txt.
I have it working on T4.0 and T3.6
As soon as Paul decides what to do (using Seremu, Serial, or both with proper product-id) and changes cores , these file will disappear.

@defagster, Downloaded MTPdrive, but it seems it only communicates with the File explorer (or so) there is no additional traffic with teensy.
Difficult to say what is correct and what wrong. Must think about it.
 
OK, getting mighty peeved now. Another day wasted trying to get this to work.

I have installed everything: libmtp, mtp-tools, gvfs-mtp, go-mtp, jmtpfs, gmtp and python-pymtp. I fiddled some more with the udev rules. I tried different cables, different usb ports on the PC and updated to the very latest MTP-t4 lib. I also updated numerous, probably irrelavent, Teensy libs.

@KurtE - I hate you. No I don't, it is just jealousy. Are you using udev rules? If so, what are they?

For a brief moment earlier, it worked! After a minute or so though it packed up and has refused to come back. At the time, I was doing something unconnected with this issue, so don't know what happened. I haven't been able to replicate it anyway.

Nautilus now sometimes shows 'Teensy MTP Disk/Serial' and sometimes 'teensyduino 0476' but cannot mount either. Serial via the usb is now working. After an 8 second delay, 'loop' is printed every second. The serial.print called in setup, 'mtp-test', doesn't appear. Can I use serial to debug now?

Thanks for all your help. Dinner time.
 
OK, getting mighty peeved now. Another day wasted trying to get this to work.

I tried today SW as is on Ubuntu with Nautilus and no other "mtp" installation and standard udev rules.
No problems occurred. So I may not be of further help.

I confirm, however, that on T4 copying from PC to Teensy is not working properly; there seems to be residual data from previous copies, or recycled object id´s. I will investigate.

Edit: Copy PC to Teensy should be working
 
Last edited:
Updated GitHub https://github.com/WMXZ-EU/MTP_t4 so that mounting/enabling MTP device on PC resets the object list.
This allows to refresh the MTP disk content by unmount/mount (Linux) or disable/enable (Windows) the MTP device.

As MTP is, AFAIK, mostly used to transfer file/directories and not to replace a mass-storage-class (MSC) a simple refresh command, while connected to device, seems not to be easy. A continuous update by the responder (Teensy) would be possiblem, but would require proper implementation of MTP events and was far too heavy for my application. Anyone, who wants to implement events is welcome to improve the system.
 
Back
Top