summaryrefslogtreecommitdiffstats
path: root/tinyusb/docs/info/changelog.rst
blob: 80205a72192e60e07054a577331e869ea23f2523 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
*********
Changelog
*********

0.10.1 (03-06-221)
===================

-  rework rp2040 examples and CMake build, allow better integration with pico-sdk

Host Controller Driver (HCD)
----------------------------

-  Fix rp2040 host driver: incorrect PID with low speed device with max packet size of 8 bytes
-  Improve hub driver
-  Remove obsolete hcd_pipe_queue_xfer()/hcd_pipe_xfer()
-  Use hcd_frame_number() instead of micro frame
-  Fix OHCI endpoint address and xferred_bytes in xfer complete event


0.10.0 (28-05-2021)
===================

-  Rework tu_fifo_t with separated mutex for read and write, better support DMA with read/write buffer info. And constant address mode
-  Improve audio_test example and add audio_4_channel_mic example
-  Add new dfu example
-  Remove pico-sdk from submodule

Device Controller Driver (DCD)
------------------------------

-  Add new DCD port for Silabs EFM32GG12 with board Thunderboard Kit (SLTB009A)
-  Add new DCD port Renesas RX63N, board GR-CITRUS
-  Add new (optional) endpoint API dcd_edpt_xfer_fifo
-  Fix build with nRF5340
-  Fix build with lpc15 and lpc54
-  Fix build with lpc177x_8x
-  STM32 Synopsys: greatly improve Isochronous transfer with edpt_xfer_fifo API
-  Support LPC55 port1 highspeed
-  Add support for Espressif esp32s3
-  nRF: fix race condition that could cause drop packet of Bulk OUT transfer

USB Device Driver (USBD)
------------------------

-  Add new (optional) endpoint ADPI usbd_edpt_xfer_fifo

Device Class Driver
-------------------

CDC

-  [Breaking] tud_cdc_peek(), tud_vendor_peek() no longer support random offset and dropped position parameter.

DFU

-  Add new DFU 1.1 class driver (WIP)

HID

-  Fix keyboard report descriptor template
-  Add more hid keys constant from 0x6B to 0xA4
-  [Breaking] rename API
   -  HID_PROTOCOL_NONE/KEYBOARD/MOUST to HID_ITF_PROTOCOL_NONE/KEYBOARD/MOUSE
   -  tud_hid_boot_mode() to tud_hid_get_protocol()
   -  tud_hid_boot_mode_cb() to tud_hid_set_protocol_cb()

MIDI

-  Fix MIDI buffer overflow issue
-  [Breaking] rename API
   -  Rename tud_midi_read() to tud_midi_stream_read()
   -  Rename tud_midi_write() to tud_midi_stream_write()
   -  Rename tud_midi_receive() to tud_midi_packet_read()
   -  Rename tud_midi_send() to tud_midi_packet_write()

Host Controller Driver (HCD)
----------------------------

-  No noticable changes

USB Host Driver (USBH)
----------------------

-  No noticable changes

Host Class Driver
-----------------

-  HID: Rework host hid driver, basically everything changes


0.9.0 (12-03-2021)
==================

Device Stack
------------

Device Controller Driver (DCD)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

RP2040

-  Fix endpoint buffer reallocation overrun problem
-  Fix osal_pico queue overflow in initialization
-  Fix Isochronous endpoint buffer size in transfer
-  Optimize hardware endpoint struct to reduce RAM usage
-  Fix enum walkaround forever check for SE0 when pull up is disabled

Sony CXD56

-  Pass the correct speed on Spresense
-  Fix setup processed flag

NXP Transdimention

-  Update dcd_init() to reset controller to device mode

USB Device Driver (USBD)
^^^^^^^^^^^^^^^^^^^^^^^^

-  Fix issue with status zlp (tud_control_status) is returned by class driver with SET/CLEAR_FEATURE for endpoint.
-  Correct endpoint size check for fullspeed bulk, can be 8, 16, 32, 64
-  Ack SET_INTERFACE even if it is not implemented by class driver.

Device Class Driver
^^^^^^^^^^^^^^^^^^^

DFU Runtime

-  rename dfu_rt to dfu_runtime for easy reading

CDC

-  Add tud_cdc_send_break_cb() to support break request
-  Improve CDC receive, minor behavior changes: when tud_cdc_rx_wanted_cb() is invoked wanted_char may not be the last byte in the fifo

HID

-  [Breaking] Add itf argument to hid API to support multiple instances, follow API has signature changes
   -  tud_hid_descriptor_report_cb()
   -  tud_hid_get_report_cb()
   -  tud_hid_set_report_cb()
   -  tud_hid_boot_mode_cb()
   -  tud_hid_set_idle_cb()
-  Add report complete callback tud_hid_report_complete_cb() API
-  Add DPad/Hat support for HID Gamepad
   -  `TUD_HID_REPORT_DESC_GAMEPAD()` now support 16 buttons, 2 joysticks, 1 hat/dpad
   -  Add hid_gamepad_report_t along with `GAMEPAD_BUTTON_` and `GAMEPAD_HAT_` enum
   -  Add Gamepad to hid_composite / hid_composite_freertos example

MIDI

-  Fix dropping MIDI sysex message when fifo is full
-  Fix typo in tud_midi_write24(), make example less ambigous for cable and channel
-  Fix incorrect endpoint descriptor length, MIDI v1 use Audio v1 which has 9-byte endpoint descriptor (instead of 7)

Host Stack
----------

Host Controller Driver (HCD)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

-  Add rhport to hcd_init()
-  Improve EHCI/OHCI driver abstraction
   -  Move echi/ohci files to portable/
   -  Rename hcd_lpc18_43 to hcd_transdimension
   -  Sub hcd API with hcd_ehci_init(), hcd_ehci_register_addr()
-  Update NXP transdimention hcd_init() to reset controller to host mode
   -  Ported hcd to rt10xx

USB Host Driver (USBH)
^^^^^^^^^^^^^^^^^^^^^^

-  No noticeable changes to usbh

Host Class Driver
^^^^^^^^^^^^^^^^^

MSC

-  Rename tuh_msc_scsi_inquiry() to tuh_msc_inquiry()
-  Rename tuh_msc_mounted_cb/tuh_msc_unmounted_cb to tuh_msc_mount_cb/tuh_msc_unmount_cb to match device stack naming
-  Change tuh_msc_is_busy() to tuh_msc_ready()
-  Add read10 and write10 function: tuh_msc_read10(), tuh_msc_write10()
-  Read_Capacity is invoked as part of enumeration process
-  Add tuh_msc_get_block_count(), tuh_msc_get_block_size()
-  Add CFG_TUH_MSC_MAXLUN (default to 4) to hold lun capacities

Others
------

-  Add basic support for rt-thread OS
-  Change zero bitfield length to more explicit padding
-  Build example now fetch required submodules on the fly while running `make` without prio submodule init for mcu drivers
-  Update pico-sdk to v1.1.0

**New Boards**

-  Microchip SAM E54 Xplained Pro
-  LPCXpresso 55s28
-  LPCXpresso 18s37


0.8.0 (05-02-2021)
==================

Device Controller Driver
------------------------

-  Added new device support for Raspberry Pi RP2040
-  Added new device support for NXP Kinetis KL25ZXX
-  Use dcd_event_bus_reset() with link speed to replace bus_signal
-  ESP32-S2:
   -  Add bus suspend and wakeup support
-  SAMD21:
   -  Fix (walkaround) samd21 setup_packet overflow by USB DMA
-  STM32 Synopsys:
   -  Rework USB FIFO allocation scheme and allow RX FIFO size reduction
-  Sony CXD56
   -  Update Update Spresense SDK to 2.0.2
   -  Fix dcd issues with setup packets
   -  Correct EP number for cdc_msc example

USB Device
----------

**USBD**

-  Rework usbd control transfer to have additional stage parameter for setup, data, status
-  Fix tusb_init() return true instead of TUSB_ERROR_NONE
-  Added new API tud_connected() that return true after device got out of bus reset and received the very first setup packet

**Class Driver**

-  CDC
   -  Allow to transmit data, even if the host does not support control line states i.e set DTR
-  HID
   -  change default CFG_TUD_HID_EP_BUFSIZE from 16 to 64
-  MIDI
   -  Fix midi sysex sending bug
-  MSC
   -  Invoke only scsi complete callback after status transaction is complete.
   -  Fix scsi_mode_sense6_t padding, which cause IAR compiler internal error.
-  USBTMC
   -  Change interrupt endpoint example size to 8 instead of 2 for better compatibility with mcu

**Example**

-  Support make from windows cmd.exe
-  Add HID Consumer Control (media keys) to hid_composite & hid_composite_freertos examples


USB Host
--------

No noticeable changes to host stack

New Boards
----------

-  NXP/Freescale Freedom FRDM-KL25Z
-  Feather Double M33 express
-  Raspberry Pi Pico
-  Adafruit Feather RP2040
-  Adafruit Itsy Bitsy RP2040
-  Adafruit QT RP2040
-  Adfruit Feather ESP32-S2
-  Adafruit Magtag 29" Eink
-  Adafruit Metro ESP32-S2
-  Adafruit PyBadge
-  Adafruit PyPortal
-  Great Scott Gadgets' LUNA D11 & D21


0.7.0 (08-11-2020)
==================

Device Controller Driver
------------------------

-  Added new support for Espressif ESP32-S2
-  Added new support for Dialog DA1469x
-  Enhance STM32 Synopsys
-  Support bus events disconnection/suspend/resume/wakeup
   -  Improve transfer performance with optimizing xfer and fifo size
   -  Support Highspeed port (OTG_HS) with both internal and external PHY
   -  Support multiple usb ports with rhport=1 is highspeed on selected MCUs e.g H743, F23. It is possible to have OTG_HS to run on Fullspeed PHY (e.g lacking external PHY)
   -  Add ISO transfer, fix odd/even frame
   -  Fix FIFO flush during stall
   -  Implement dcd_edpt_close() API
   -  Support F105, F107
-  Enhance STM32 fsdev
   -  Improve dcd fifo allocation
   -  Fix ISTR race condition
   -  Support remap USB IRQ on supported MCUs
   -  Implement dcd_edpt_close() API
-  Enhance NUC 505: enhance set configure behavior
-  Enhance SAMD
   -  Fix race condition with setup packet
   -  Add SAMD11 option `OPT_MCU_SAMD11`
   -  Add SAME5x option `OPT_MCU_SAME5X`
-  Fix SAMG control data toggle and stall race condition
-  Enhance nRF
   -  Fix hanged when tud_task() is called within critical section (disabled interrupt)
   -  Fix disconnect bus event not submitted
   -  Implement ISO transfer and dcd_edpt_close()


USB Device
----------

**USBD**

-  Add new class driver for **Bluetooth HCI** class driver with example can be found in [mynewt-tinyusb-example](https://github.com/hathach/mynewt-tinyusb-example) since it needs mynewt OS to run with.
-  Fix USBD endpoint usage racing condition with `usbd_edpt_claim()/usbd_edpt_release()`
-  Added `tud_task_event_ready()` and `osal_queue_empty()`. This API is needed to check before enter low power mode with WFI/WFE
-  Rename USB IRQ Handler to `dcd_int_handler()`. Application must define IRQ handler in which it calls this API.
-  Add `dcd_connect()` and `dcd_disconnect()` to enable/disable internal pullup on D+/D-  on supported MCUs.
-  Add `usbd_edpt_open()`
-  Remove `dcd_set_config()`
-  Add *OPT_OS_CUMSTOM* as hook for application to overwrite and/or add their own OS implementation
-  Support SET_INTERFACE, GET_INTERFACE request
-  Add Logging for debug with optional uart/rtt/swo printf retarget or `CFG_TUSB_DEBUG_PRINTF` hook
-  Add IAR compiler support
-  Support multiple configuration descriptors. `TUD_CONFIG_DESCRIPTOR()` template has extra config_num as 1st argument
-  Improve USB Highspeed support with actual link speed detection with `dcd_event_bus_reset()`
-  Enhance class driver management
   -  `usbd_driver_open()` add max length argument, and return length of interface (0 for not supported). Return value is used for finding appropriate driver
   -  Add application implemented class driver via `usbd_app_driver_get_cb()`
   -  IAD is handled to assign driver id
-  Added `tud_descriptor_device_qualifier_cb()` callback
-  Optimize `tu_fifo` bulk write/read transfer
-  Forward non-std control request to class driver
-  Let application handle Microsoft OS 1.0 Descriptors (the 0xEE index string)
-  Fix OSAL FreeRTOS yield from ISR

**Class Drivers**

-  USBNET: remove ACM-EEM due to lack of support from host
-  USBTMC: fix descriptors when INT EP is disabled
-  CDC:
   -  Send zero length packet for end of data when needed
   -  Add `tud_cdc_tx_complete_cb()` callback
   -  Change tud_cdc_n_write_flush() return number of bytes forced to transfer, and flush when writing enough data to fifo
-  MIDI:
   -  Add packet interface
   -  Add multiple jack descriptors
   -  Fix MIDI driver for sysex
-  DFU Runtime: fix response to SET_INTERFACE and DFU_GETSTATUS request
-  Rename some configure macro to make it clear that those are used directly for endpoint transfer
   -  CFG_TUD_HID_BUFSIZE to CFG_TUD_HID_EP_BUFSIZE
   -  CFG_TUD_CDC_EPSIZE to CFG_TUD_CDC_EP_BUFSIZE
   -  CFG_TUD_MSC_BUFSIZE to CFG_TUD_MSC_EP_BUFSIZE
   -  CFG_TUD_MIDI_EPSIZE to CFG_TUD_MIDI_EP_BUFSIZE
-  HID:
   -  Fix gamepad template descriptor
   -  Add multiple HID interface API
   -  Add extra comma to HID_REPORT_ID

USB Host
--------

-  Rework USB host stack (still work in progress)
   -  Fix compile error with pipehandle
   -  Rework usbh control and enumeration as non-blocking
-  Improve Hub, MSC, HID host driver

Examples
--------

-  Add new hid_composite_freertos
-  Add new dynamic_configuration to demonstrate how to switch configuration descriptors
-  Add new hid_multiple_interface
-  Enhance `net_lwip_webserver` example
   -  Add multiple configuration: RNDIS for Windows, CDC-ECM for macOS (Linux will work with both)
   -  Update lwip to STABLE-2_1_2_RELEASE for net_lwip_webserver
-  Added new Audio example: audio_test uac2_headsest

New Boards
----------

-  Espressif ESP32-S2: saola_1, kaluga_1
-  STM32: F746 Nucleo, H743 Eval, H743 Nucleo, F723 discovery, stlink v3 mini, STM32L4r5 Nucleo
-  Dialog DA1469x dk pro and dk usb
-  Microchip: Great Scoot Gadgets' LUNA, samd11_xplained, D5035-01, atsamd21 xplained pro
-  nRF: ItsyBitsy nRF52840


0.6.0 (30-03-2020)
==================

Added **CONTRIBUTORS.md** to give proper credit for contributors to the stack. Special thanks to `Nathan Conrad <https://github.com/pigrew>`__ , `Peter Lawrence <https://github.com/majbthrd>`__ , `William D. Jones <https://github.com/cr1901>`__ and `Sean Cross <https://github.com/xobs>`__ and others for spending their precious time to add lots of features and ports for this release.

Added
-----

**MCU**

-  Added support for Microchip SAMG55
-  Added support for Nordic nRF52833
-  Added support for Nuvoton: NUC120, NUC121/NUC125, NUC126, NUC505
-  Added support for NXP LPC: 51Uxx, 54xxx, 55xx
-  Added support for NXP iMXRT: RT1011, RT1015, RT1021, RT1052, RT1062, RT1064
-  Added support for Sony CXD56 (Spresense)
-  Added support for STM32: L0, F0, F1, F2, F3, F4, F7, H7
-  Added support for TI MSP430
-  Added support for ValentyUSB's eptri

**Class Driver**

-  Added DFU Runtime class driver
-  Added Network class driver with RNDIS, CDC-ECM, CDC-EEM (work in progress)
-  Added USBTMC class driver
-  Added WebUSB class driver using vendor-specific class
-  Added multiple instances support for CDC and MIDI
-  Added a handful of unit test with Ceedling.
-  Added LOG support for debugging with CFG_TUSB_DEBUG
-  Added `tud_descriptor_bos_cb()` for BOS descriptor (required for USB 2.1)
-  Added `dcd_edpt0_status_complete()` as optional API for DCD

**Examples**

Following examples are added:

-  board_test
-  cdc_dual_ports
-  dfu_rt
-  hid_composite
-  net_lwip_webserver
-  usbtmc
-  webusb_serial

**Boards**

Following boards are added:

-  adafruit_clue
-  arduino_nano33_ble
-  circuitplayground_bluefruit
-  circuitplayground_express
-  feather_m0_express
-  feather_nrf52840_sense
-  feather_stm32f405
-  fomu
-  itsybitsy_m0
-  itsybitsy_m4
-  lpcxpresso11u37
-  lpcxpresso1549
-  lpcxpresso51u68
-  lpcxpresso54114
-  lpcxpresso55s69
-  mbed1768
-  mimxrt1010_evk
-  mimxrt1015_evk
-  mimxrt1020_evk
-  mimxrt1050_evkb
-  mimxrt1060_evk
-  mimxrt1064_evk
-  msp_exp430f5529lp
-  ngx4330
-  nrf52840_mdk_dongle
-  nutiny_nuc121s
-  nutiny_nuc125s
-  nutiny_nuc126v
-  nutiny_sdk_nuc120
-  nutiny_sdk_nuc505
-  pca10059
-  pca10100
-  pyboardv11
-  raytac_mdbt50q_rx
-  samg55xplained
-  seeeduino_xiao
-  spresense
-  stm32f070rbnucleo
-  stm32f072disco
-  stm32f103bluepill
-  stm32f207nucleo
-  stm32f401blackpill
-  stm32f411blackpill
-  stm32f411disco
-  stm32f412disco
-  stm32f767nucleo
-  stm32h743nucleo
-  stm32l0538disco
-  stm32l476disco
-  teensy_40

Changed
-------

-  Changed `tud_descriptor_string_cb()` to have additional Language ID argument
-  Merged hal_nrf5x.c into dcd_nrf5x.c
-  Merged dcd_samd21.c and dcd_samd51.c into dcd_samd.c
-  Generalized dcd_stm32f4.c to dcd_synopsys.c
-  Changed cdc_msc_hid to cdc_msc (drop hid) due to limited endpoints number of some MCUs
-  Improved DCD SAMD stability, fix missing setup packet occasionally
-  Improved usbd/usbd_control with proper hanlding of zero-length packet (ZLP)
-  Improved STM32 DCD FSDev
-  Improved STM32 DCD Synopsys
-  Migrated CI from Travis to Github Action
-  Updated nrfx submodule to 2.1.0
-  Fixed mynewt osal queue definition
-  Fixed cdc_msc_freertos example build for all MCUs


0.5.0 (06-2019)
===============

First release, device stack works great, host stack works but still need improvement.

-  Special thanks to @adafruit team, especially @tannewt to help out immensely to rework device stack: simplify osal & control transfer, adding SAMD21/SAMD51 ports, writing porting docs, adding MIDI class support etc...
-  Thanks to @cr1901 for adding STM32F4 port.
-  Thanks to @PTS93 and @todbot for HID raw API