prickle
Active member
The MTP Responder https://github.com/yoonghm/MTP works great using the provided MTP Disk (Experimental) usb type selection.
However, if I try extending the MTP disk functionality with other usb devices I get odd problems.
This is on Windows 7 ultimate sp1, using Teensy 3.6. I have tried clearing the USB cached devices, changing the USB descriptors and reinstalling many times but issues persist.
For instance, if I try this addition to usb_desc.h
Along with this addition in boards.txt
MTP disk is present and is usable but the serial port appears broken, appearing as "unknown" in the ports menu.
Other combinations I have tried always appear to leave one of the interfaces broken.
Also, here is my clumsy attempt to write an MTP driver for Serialflash devices. This is also not working quite right yet, files transfer but the windows explorer does not refresh to show them until a replug. It was working but stopped at some point so not sure if it is just that I broke my Windows USB stack.
https://github.com/prickle/MTP
So now I'm stuck. I don't know what I'm doing so no surprise really. Can anybody please suggest where I might be going wrong?
However, if I try extending the MTP disk functionality with other usb devices I get odd problems.
This is on Windows 7 ultimate sp1, using Teensy 3.6. I have tried clearing the USB cached devices, changing the USB descriptors and reinstalling many times but issues persist.
For instance, if I try this addition to usb_desc.h
Code:
#elif defined(USB_MTPDISK_SERIAL)
#define VENDOR_ID 0x16C0
#define PRODUCT_ID 0x04D7
#define BCD_DEVICE 0x0215
#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'}
#define PRODUCT_NAME_LEN 15
#define EP0_SIZE 64
#define NUM_ENDPOINTS 5
#define NUM_USB_BUFFERS 30
#define NUM_INTERFACE 3
#define MTP_INTERFACE 3 // MTP Disk
#define MTP_TX_ENDPOINT 4
#define MTP_TX_SIZE 64
#define MTP_RX_ENDPOINT 4
#define MTP_RX_SIZE 64
#define MTP_EVENT_ENDPOINT 5
#define MTP_EVENT_SIZE 16
#define MTP_EVENT_INTERVAL 10
#define CDC_IAD_DESCRIPTOR 1
#define CDC_STATUS_INTERFACE 0
#define CDC_DATA_INTERFACE 1 // Serial
#define CDC_ACM_ENDPOINT 1
#define CDC_RX_ENDPOINT 2
#define CDC_TX_ENDPOINT 3
#define CDC_ACM_SIZE 16
#define CDC_RX_SIZE 64
#define CDC_TX_SIZE 64
#define ENDPOINT1_CONFIG ENDPOINT_TRANSMIT_ONLY
#define ENDPOINT2_CONFIG ENDPOINT_RECEIVE_ONLY
#define ENDPOINT3_CONFIG ENDPOINT_TRANSMIT_ONLY
#define ENDPOINT4_CONFIG ENDPOINT_TRANSMIT_AND_RECEIVE
#define ENDPOINT5_CONFIG ENDPOINT_RECEIVE_ONLY
Along with this addition in boards.txt
Code:
teensy36.menu.usb.serialmtp.build.usbtype=USB_MTPDISK_SERIAL
teensy36.menu.usb.serialmidimtp=Serial + MIDI + MTP Disk
MTP disk is present and is usable but the serial port appears broken, appearing as "unknown" in the ports menu.
Other combinations I have tried always appear to leave one of the interfaces broken.
Also, here is my clumsy attempt to write an MTP driver for Serialflash devices. This is also not working quite right yet, files transfer but the windows explorer does not refresh to show them until a replug. It was working but stopped at some point so not sure if it is just that I broke my Windows USB stack.
https://github.com/prickle/MTP
So now I'm stuck. I don't know what I'm doing so no surprise really. Can anybody please suggest where I might be going wrong?