RELEASE_NOTES 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. ************************************
  2. ** Greaseweazle Firmware Release Notes
  3. ** Keir Fraser <keir.xen@gmail.com>
  4. ************************************
  5. ** v1.6 - 28 September 2024
  6. - Flux write: Whole-track writes to hard-sectored disks
  7. - Pre- and post-write delays: Specified by many drive datasheets
  8. - Required for correct interaction with offset tunnel-erase heads
  9. - Configurable "Index Mask", for debouncing noisy INDEX signals
  10. - Seek (HDD): Remove arbitrary 100-cylinder limit
  11. ** v1.5 - 19 December 2023
  12. - AT32F403(A): Extend SRAM from 96kB to 224kB
  13. - Report USB buffer size in 'gw info'
  14. - GCC12 build fixes
  15. - USB High Speed: Fix device_qualifier descriptor
  16. ** v1.4 - 22 July 2023
  17. - New board type: V4.1 (AT32F4xx, USB-C)
  18. ** v1.3 - 18 February 2023
  19. - AT32F403A: Run this MCU at 216MHz in main firmware
  20. - USB: Implement GET_STATUS(DEVICE) as required by USB spec
  21. - This fixes repeated USB resets on some Linux hosts
  22. - Blinky test: Fix serial baud rate (115200)
  23. ** v1.2 - 18 July 2022
  24. - Support AT32F403A MCU on F1 and V4 boards
  25. - Send MCU info to host (reported in 'gw info')
  26. ** v1.1 - 27 February 2022
  27. - V4: External Activity LED can be connected to pin TXO
  28. - TXO-RXI jumper still forces update mode
  29. - TXO still used for serial logging in debug firmware builds
  30. - GetPin: Report on all pins also supported by SetPin
  31. - ReadFlux: Don't report missing index if read is not index-terminated
  32. - GetInfo: New sub-pages CurrentDrive and Drive_n
  33. - Report motor, cylinder#, and flippy drive status
  34. ** v1.0 - 26 December 2021
  35. - Firmware is now released separately from the host tools
  36. - No firmware changes since v0.31 (apart from the version bump)
  37. -------------------------------------------------------------------------
  38. All versions below include firmware and host tools in a combined release.
  39. ** v0.33 - 14 December 2021
  40. - Support high-density Amiga images (1760kB ADF)
  41. - IPF: Automatic write verification
  42. - New format specifiers for Acorn DFS and ADFS
  43. - New image handlers for Acorn: ADS, ADM, ADL, SSD, DSD
  44. ** v0.32 - 14 December 2021
  45. - New format specifiers for IBM, Atari ST and Commodore 1581
  46. - New image handlers for *.ST and *.D81
  47. ** v0.31 - 8 October 2021
  48. - F1: Support Low-Density STM32F103C6 chips, 32k Flash, 10k SRAM
  49. - V4: Increase USB buffer size from 16kB to 64kB
  50. ** v0.30 - 12 August 2021
  51. - New board type: V4 Slim (AT32F403 MCU, laptop drive interface)
  52. - F7 Slim: Support Disk Change Detect (used by WinUAE floppy bridge)
  53. ** v0.29 - 29 July 2021
  54. - gw read/write: Fix memory leak, reducing memory usage by approx 10x
  55. - gw bandwidth: Test USB connection integrity
  56. - New board type: F1 Plus (Unbuffered)
  57. ** v0.28 - 22 June 2021
  58. - V4: Improve USB bandwidth and double MCU clock speed to 144MHz
  59. - Fixes "gw bandwidth" warnings
  60. - Firmware: New command CMD_NOCLICK_STEP.
  61. - Used by Rob Smith's WinUAE bridge to implement noclick
  62. - "gw pin": Split into "gw pin set" and "gw pin get"
  63. ** v0.27 - 12 May 2021
  64. - EDSK: Support writing KBI-19 protection tracks
  65. - EDSK: Support next IDAM in preceding sector's GAP
  66. - gw seek: New option --motor-on to enable drive motor while seeking
  67. - New firmware command: CMD_GET_PIN to interrogate input floppy pins
  68. - New board type: V4 (using AT32F4xx MCUs)
  69. - New board type: F1 Plus (enhanced BP adapter board by Monideth Pen)
  70. ** v0.26 - 26 March 2021
  71. - Support new Greaseweazle model: F7 v3 "Thunderbolt"
  72. - EDSK: Support for writing many protected EDSK files
  73. - Windows 7: Disable jumperless firmware update as it hangs.
  74. - Default head-step delay is doubled to 10ms.
  75. ** v0.25 - 27 February 2021
  76. - EDSK: Support for writing unprotected EDSK files
  77. - SCP: Allow disktype header byte to be specified (eg "a.scp::disktype=amiga")
  78. - SCP: Fix import of non-index-cued SCP imnage files
  79. - AmigaDOS: Mark bad sectors with explicit pattern "-=[BAD SECTOR]=-"
  80. - read/write: Add a --retries parameter used if analyse/verify stage fails
  81. - clean: New command to clean a drive using a cleaning disk
  82. - gw: New global option --time to print elapsed time taken by an operation
  83. - gw: Improve reliability of USB connection reset when starting an operation
  84. - flippy: Improve reliability for Panasonic modded drives (find true trk0)
  85. - Linux/Mac: setup.sh better error reporting when run from wrong folder
  86. ** v0.24 - 14 January 2021
  87. - Index-cue generated Kryoflux and SCP image files
  88. - Most external tools and emulators fail with non-cued streams
  89. - gw write: New precomp command-line option (see the wiki)
  90. - gw: Backward compatibility with older firmware (only back to v0.23)
  91. - Safer bootloader update (CRC check before erasing existing bootloader)
  92. ** v0.23 - 13 January 2021
  93. - Support new Greaseweazle model: F7 Slim
  94. - Read/write/verify 1.44M IMG image files
  95. - Read/write Kryoflux stream files
  96. - Optimisations:
  97. - Rewrite read/verify conversion routines in C
  98. - Fast Amiga track reads (now read an Amiga disk in approx 45 seconds)
  99. - Shrink the Windows distribution zip file
  100. - GW: New track-selection syntax ("--track="). See the wiki.
  101. ** v0.22 - 27 November 2020
  102. - Support read and write of Amiga ADF image files
  103. - Increase /STEP pulse width to 15us (fix 5.25" drive seek for Arno Olaf)
  104. - Flippy drives: support 'gw seek' down to track -8
  105. - Revised USB protocol
  106. ** v0.21 - 10 September 2020
  107. - Support new Greaseweazle model: F7 Lightning Plus
  108. - Fixes for older drives
  109. - 50us index mask, avoid double triggering on the index signal
  110. - Increase default head-step delay to 5ms
  111. - Windows: Install the CAPS/SPS IPF library automatically
  112. - New command 'gw seek' to seek to specified drive cylinder
  113. - New syntax for specifying Greaseweazle device name on command line
  114. - eg 'gw read --device COM3 a.scp'
  115. ** v0.20 - 1 July 2020
  116. - gw write: New options --erase-empty and --double-step
  117. - gw update: Fix COM redetect on Windows running Bitdefender
  118. - Support version 2 of Ant Goffart's F7 Plus
  119. - SCP: support legacy single-sided SCP images
  120. - Automatic import; Export via ::legacy_ss suffix
  121. - eg. gw read --single-sided my.scp::legacy_ss
  122. - SCP: support SCP image files generated by FluxEngine
  123. ** v0.19 - 8 June 2020
  124. - F7 v2: Support for the new board design
  125. - gw update: Signature and CRC validation checks
  126. - gw read: Fix end-track field in single-sided SCP images
  127. ** v0.18 - 28 May 2020
  128. - gw read: New parameters --rate and --rpm
  129. - rate: Bitcell data rate in kbit/s (eg 250=DD 500=HD)
  130. - Used only for HFE images right now, where default is DD (250)
  131. - rpm: Normalise track timings to the given RPM value
  132. - This occurs before any other conversion or analysis
  133. - gw info: New command to display information about the Greaseweazle setup
  134. - gw bandwidth: Improved stats output
  135. - SCP: Fix single-sided image handling according to latest SCP spec.
  136. - Operates correctly with latest beta version of HxC software
  137. - F7: Support new board designs
  138. - AmberTronic F7 Plus: Kryoflux form factor, output buffers, 12v supply
  139. - F7 Lightning: High Speed USB, output buffers
  140. ** v0.17 - 19 May 2020
  141. - Windows: New self-contained executable distribution
  142. - No need to install Python, or module dependencies
  143. - Mac, Linux: Main script is directly executable
  144. - No need to manually invoke the Python interpreter
  145. - GW host tool: Help-text description for each available action
  146. ** v0.16 - 15 May 2020
  147. - F7 Firmware: Enable over-drive voltage mode
  148. - Required for reliable 216MHz operation (see datasheet)
  149. - Bootloader update:
  150. - 'gw.py update --bootloader' updates the bootloader
  151. - Not normally required
  152. - Failure may brick the Weazle and require full reflash: Take care!
  153. - Update build system to work with Windows MinGW environment
  154. ** v0.15 - 5 May 2020
  155. - Host tool improvements:
  156. - IPF: More robust conversion to raw flux for writeout
  157. - HFE: Fix crash when writing out HFE from third party tools
  158. - F7 Firmware improvements:
  159. - Preparation for High Speed USB (future board using 730Z8 MCU)
  160. - Enable Instruction and Data caches (10x execution speedup)
  161. - Various improvements to bandwidth as reported by 'gw.py bandwidth'
  162. ** v0.14 - 29 April 2020
  163. - IPF: Full write support (weak data, index misalignment)
  164. - New GW commands: bandwidth, erase
  165. - bandwidth: Measure USB read/write bandwidth
  166. - erase: Erase a disk
  167. - F7 USB: Improved bandwidth when writing to disk
  168. - Much less likely to see FluxUnderflow failures
  169. - update: Fix a bug which could fail to reopen the GW device for update
  170. - update: Automatically find the update file if filename not specified
  171. - Control script: Tidier notification of errors (no scary backtrace)
  172. ** v0.13 - 25 April 2020
  173. - HFE: Read & write support
  174. - IPF: Preliminary write support
  175. - Requires SPS/CAPS support library. See the wiki.
  176. - Weak data not yet supported (RNC "Protect Process" protection, & others)
  177. - Write splice is always rotated to the index (affects Speedlock & others)
  178. - Also TODO: Verified writes
  179. - USB: Use the VID:PID pair assigned to Greaseweazle (1209:4d69)
  180. - New prerequisite: 'bitarray' module. See the wiki.
  181. ** v0.12 - 10 March 2020
  182. - GW Autodetect: General improvements, and now works on Windows 7
  183. - New read parameter --double-step to double-step drive heads
  184. - Useful for reading a 40-cylinder disk in an 80-cylinder drive
  185. - New 'pin' command allows a floppy pin to be set to specified level
  186. - Currently supported only for pin 2 (DENSEL)
  187. - New 'reset' command resets the Greaseweazle to power-on settings
  188. - Motors off, drives deselected, power-on pin levels and delay values
  189. ** v0.11 - 21 January 2020
  190. - GW.py: Auto-detect the COM/serial port device name
  191. - The device argument is now optional!
  192. - USB: Provide a serial-id string to the host
  193. - Identifier is unique to each Greaseweazle device
  194. - Allows disambiguation between multiple Greaseweazle devices
  195. - Recommended: Full flash from HEX file (embeds serial in bootloader)
  196. - Ubuntu: Udev script now creates a /dev/greaseweazle symlink
  197. ** v0.10 - 17 January 2020
  198. - STM32F7xx: Multi-drive support via drive-select config option
  199. - Up to three Shugart drives or two IBM/PC drives
  200. - gw.py read|write --drive {a,b,0,1,2}
  201. - See the "Drive Select" wiki page
  202. ** v0.9 - 7 January 2020
  203. - Activity LED
  204. - Lights while a USB-issued command is in progress
  205. - Flashes when enumerated but idle in the firmware-update bootloader
  206. ** v0.8 - 6 January 2020
  207. - STM32F73xx: Various Fixes and Improvements
  208. - Allow Firmware Update mode to be forced via strapping Serial RX/TX
  209. - Fix bogus sample values at start of read flux values
  210. - Fix some time constants to be in units of the sample clock
  211. - USB: Advertise USB 2.0 device descriptor
  212. ** v0.7 - 6 December 2019
  213. - USB: Fix end-of-stream detection on track writes
  214. - Writes of empty/unformatted tracks sometimes hung forever
  215. - No Flux Area: Firmware automatically masters long NFAs during track writes
  216. - Generating no flux transitions does not read back as a NFA
  217. - STM32F73xx: Initial support for new STM32 MCU
  218. - Two HEX files are included: Use Greaseweazle-F1-* for existing boards!
  219. - Single unified UPD file containing both firmware images
  220. ** v0.6 - 15 November 2019
  221. - gw.py: Big overhaul of underlying Python package
  222. - Action (read, write, update) must come first on the command line
  223. - eg. "python3 gw.py read --ecyl=39 foo.scp COM3"
  224. - gw.py: New action "delays" to print/set delay parameters
  225. - eg. "python3 gw.py delays --step=10000" to increase step time to 10ms
  226. ** v0.5 - 11 November 2019
  227. - USB: Overhaul the protocol and allow writes to be terminated at index
  228. - Terminate-at-index is always used by current Python control script
  229. - Terminate-at-index prevents an over-long write from overwriting itself
  230. - Fix interruption of track writes (eg. KeyboardInterrupt)
  231. - gw.py: New option --adjust-speed to normalise flux times for target drive
  232. - Measures RPM of the target drive and calculates an adjustment factor
  233. ** v0.4 - 5 November 2019
  234. - Blinky: Diagnostic test firmware to detect fake STM32 chips
  235. - https://github.com/keirf/greaseweazle/wiki/STM32-Fakes
  236. - Floppy Write: Fix for very short flux timings
  237. - Floppy Read: Fix for very long flux timings
  238. - USB: Small improvement to double-buffer logic
  239. ** v0.3 - 30 October 2019
  240. - Bootloader: Fix Programming-Jumper detection
  241. - Read Track: Various minor fixes
  242. - SCP: Fix the SCP file headers generated by "gw.py read"
  243. ** IMPORTANT USER INSTRUCTIONS **:
  244. - Users must serial-update using the v0.3 HEX file
  245. - DO NOT update from v0.2 using the UPD file
  246. - May need to install the crcmod package: eg "pip3 install crcmod"
  247. ** v0.2 - 29 October 2019
  248. - USB: Fix hangs during "gw.py read"
  249. - Thanks to Charlie Smurthwaite for telling me how to fix this!
  250. - USB: Improved bandwidth (double-buffered IN/OUT endpoints)
  251. - Reduces risk of buffer underflow/overflow during disk operations
  252. - Firmware Update: Requires a jumper across A14 (aka DCL) and GND
  253. - eg. "python gw.py update Greaseweazle-v0.2.upd COM3"
  254. ** v0.1 - 17 October 2019
  255. - First release