b6.4
This is a huge release and includes a TON of stability fixes and changes. With it we are very close to Release-Candidate status. This release includes fixes across the entire stack, including:
- WiFi/Network Stability - We've spent time fixing up issues on Azure IoT Hub integrations and MQTT.
- Meadow.Core - Lots of cleanup and final v1.0 fixes/deprecations/etc.
- Tooling Improvements - We've fixed a number of papercuts in Meadow.CLI and smoothed out the IDE experience in our Visual Studio extensions. And we've added Visual Studio for Mac 2022 support!
- Seeed Studio Grove Drivers - We've published 33 Seeed Studio Grove peripheral drivers!
- mikroBus Drivers - We've released drivers for 5 mikroBUS peripherals with more coming.
Updating
This is a full stack release requiring an OS update, new nuget packages, a new Meadow CLI and new Visual Studio extensions.
Meadow.CLI
Start by making sure you have the latest version of the CLI (0.19.3) by running:
dotnet tool update Wildernesslabs.Meadow.CLI --global
Meadow.OS
Download the latest os:
meadow download os
And update by putting your Meadow device in boot loader mode and running:
meadow flash os
If you experience any stability or deployment issues you may need to erase the flash on Meadow and then re-install the latest OS:
meadow flash erase
Meadow.OS
We've made a number of stability and functionality improvements in MeadowOS to enable support for the Core-Compute Module, better Power APIs, improved network APIs, etc. Most of these improvements enable features in the Meadow.Core section below.
One improvement of note - Meadow will now detect the executing hardware at runtime and throws an exception if the hardware in the MeadowApp
signature doesn't match.
Meadow.Core
We're continuing to standardize and improve our API surface. And this release includes several improvements. We've also added support for the Meadow Core-Compute module which gave us an opportunity to review, rethink, and standardize some of our existing APIs.
Battery Info
We're continuing progress on the power APIs. This release we've added a new BatteryInfo
struct to Meadow.Contracts enabling the Battery API to return battery percentage, max voltage, etc.
Async Network APIs
We've modernized some of our WiFi and network APIs by replacing blocking calls with async
methods. Device.WiFiAdapter.Scan()
is now awaitable.
Unitization
The release continues to update APIs to use unitized values instead of ints/floats/doubles. The I2C APIs now take a Meadow.Units.Frequency
to set bus speed.
There are also several APIs that have been updated to take a TimeSpan
to represent a delay or duration.
Improved peripheral interfaces
This release cleans up several interfaces in Meadow Contracts and adds a few new ones.
ILed
,IPwmLed
andIButton
- Have updates and add a few missing key propertiesICamera
- We've added an interface for camera peripherals- Analog Joysticks - We replaced
JoystickPosition
withAnalogJoyStickPosition
and replaceIJoystickSensor
withIAnalogJoystick
- Digital Joysticks - Added a new
IDigitalJoystick
interface to represent 4 or 8 way digital joysticks - Analog Triggers - Added a new
IAnalogTrigger
interface for analog triggers common on game console controllers
Removal of Deprecated Methods and Properties
Many calls that were deprecated with a warning in previous releases have been removed. These were largely in the SPI and I2C bus implementations.
Rename/Deprecation of F7Micro
and F7MicroV2
F7Micro
and F7Microv2
class names have been deprecated and replaced with the more-appropriately named F7FeatherV1
and F7FeatherV2
classes. Backward support still exists and will give a deprecation error. Future versions will escalate this to an error, so it is recommended you migrate your code.
Support for the Core-Compute Module
This release adds support for the new Meadow Core-Compute module with new IMeadowDevice
and IPinout
implementations. This support required refactoring of several base classes and interfaces.
Other Changes
- Added
IPin GetPin(string name)
method toIMeadowDevice
interface - Fixed a bug where instantiating a PWM port would reset existing GPIO ports and cause an
InterruptGroupInUseException
Meadow.Foundation
Meadow Foundation continues to see new drivers and API improvements.
This includes additions to Meadow.Foundation as well as two new driver collections supporting Seeed Studio Grove peripherals and Mikroelectronika mikroBUS. We've also moved the FeatherWing drivers into their own repo.
New Meadow.Foundation drivers
AS5013
- I2C hall-sensor 2D mini joystickDS3502
- I2C digital potentiometer (community request)HTU31D
- I2C humidity and temperature sensorSHT4x
- Series of I2C humidity and temperature sensorsWiiExtensionControllers
I2C Nintendo Wii extension controller driverVC0706
- Serial camera driver is complete!
New repos can be found here:
Meadow.CLI
- .NET 6.0 support! - This enables support for M1/M2 Apple Macs
- version params - Several commands now accept a
--version
(-v
) param allowing you to specify which OS version you want to flash to Meadow - Improved error handling - This includes fixing a silent failure when attempting to install dfu-util on Windows
- Improved error messages - The CLI is now properly handling several unhandled exceptions and error messages have been updated for clarity
Visual Studio extensions
- Port selector in Windows - The Meadow extensions for Visual Studio 2019 and 2022 now have a Meadow port selector widget on the toolbar - this greatly streamlines selecting the Meadow COM port
- Visual Studio for Mac 2022 - Now that VS for Mac 2022 has "gone gold" and enabled extensions we're now able to support the latest Mac IDE
Known Issues
Network
- Large Payloads - Meadow is limited to 4k payloads when POSTing data to a REST endpoint
- MQTT - Some customization is required in the MQTT nuget package - Wilderness Labs will be publishing a custom MQTT package for Meadow very soon
Bug fixes
- #117 Getting local IP address fails - Fixed.
b6.3
This is fast follow to beta 6.2 with some much anticipated network stability improvements. We tested well beyond 3 million! HTTP requests with no degradation in performance! And this includes the Meadow Foundation Web Server - Maple.
Updating
This update consists of OS binaries and a new CLI. There are no API changes or nuget updates. Expect to see another full stack update with the next release.
To update, start by installing the latest version of Meadow CLI (0.19.0):
dotnet tool update Wildernesslabs.Meadow.CLI --global
Download the latest os:
meadow download os
And update by putting your Meadow device in boot loader mode and running:
meadow flash os
If you experience any stability or deployment issues you may need to erase the flash on Meadow and then re-install the latest OS:
meadow flash erase
Known Issues
- Visual Studio deployment - When debugging, the extension may not automatically deploy your latest changes to your device. The workaround is to deploy first and then debug.
- WiFi startup with Config files has been disabled due to a regression. If using config files, you'll need to update your code to connect to your WiFi network programmatically. You can still get date and time via NTP with the meadow.config file.
- D05 and D06 pins as PWM Ports are not working. You will get an exception when using D06 and D05 will not output any voltage.
b6.2
This is another milestone release for Meadow! The team has been pushing hard on stability improvements and new features - unfortunately those two things aren't always complementary. We tried pushing this release more than once over the past few months and discovered regressions. We're really excited to deliver this version that unlocks new functionality and clears the path to v1.0!
- More open-source - We've open-sourced more of our API stack! Meadow.Units and Meadow.Contracts are now open-source - and this unlocks Meadow.Linux! (still in early development)
- Network stability - WiFi stability improvements and general API cleanup
- More drivers - We've continued to invest in Meadow.Foundation, releasing eight (8) new driver packages + a huge collection of fixes and improvements
Updating
This is a full stack release requiring an OS update, new nuget packages, a new Meadow CLI and new Visual Studio extensions. Start by making sure you have the latest version of the CLI (0.15.2) by running:
dotnet tool update Wildernesslabs.Meadow.CLI --global
Meadow.OS
- Network stability - The network stack received some much needed love. NTP and DNS protocol implementation was improved, and support for POSIX socket options (via getsockopt()) is now implemented and available to .NET apps. Network stability will continue to be a focus for the next release.
- Network APIs - We've also spent time cleaning up behavior and naming of the WiFi and network API surface.
- .NET Standard support - Added another missing two type forwarding assemblies to the OS. This fixes issues with using some .NET Standard 2.1 nugets on the Meadow, including some more System.Text.Json issues.
The release also includes many less visible reliability improvements and adjustments on the file self-configuration system and Meadow/host communication.
Meadow.CLI
The CLI has a few under-the-hood improvements for B6.2. It will now automatically erase the Meadow flash when updating from older versions of Meadow OS. This is to correct a partitioning bug introduced in B6.0.
Meadow.Core
- More open-source - Two major components of the core API stack have been moved to open-source! Meadow.Units and Meadow.Contracts
- More unitization - We're continuing to review and improve our API surface - several APIs have been updated to use Meadow.Units instead of non-dimensional values for things like frequency and time. This brings some minor breaking changes - for example, when setting SPI speed.
- Pinout fixes - We discovered a couple of pins were misconfigured on Meadow V2 boards - specifically D10 and D11. This should fix issues when using PWM.
Meadow.Foundation
- New MaxBotix drivers - We now support the MaxBotix series of distance sensors including I2C, analog and serial variants!
- New SwitchingRainGauge driver - This peripheral is commonly used with weather stations and we include one with Clima!
- New PCA9633 driver - A LED driver capable of driving up to 4 LEDs, commonly used for backlight and RGB applications
- New MMA7660FC driver - A low power 3-axis accelerometer with orientation and tap detection
- New HMC5883L driver - This 3-axis digital compass has been under construction for over year and we're excited to see it complete and released
- New Keyboard FeatherWing driver - The BBQ 10 Keyboard FeatherWing includes a Blackberry keyboard, an analog light sensor and a full color touch screen!
- New BME68x drivers - Meadow now supports I2C Bme680s and Bme688s - SPI support coming soon
- New AS1X15 ModBus drivers - Meadow now has ModBus support!!
You can see the full list of improvements and fixes here
Known Issues
- When using Visual Studio - When debugging, the extension may not automatically deploy your latest changes to your device. The workaround is to deploy first and then debug.
- Joining WiFi network at startup with Config files has been disabled due to a regression. If using config files, you'll need to update your code to connect to your WiFi network programmatically. You can still get date and time via NTP with the meadow.config file.
- WiFi stability - although B6.2 has improved network stability, we're still seeing issues after 100+ network requests.
- Configuring D05 and D06 pins as PWM Ports are not working. You will get an exception when using D06 and D05 will not output any voltage.
b6.0.1
This is a point release with a big focus on tooling features and stability along with a number of Meadow.Foundation stability fixes, performance improvements, and API consistency updates.
- VS2022 support Meadow officially supports Visual Studio 2022! Open the Manage Extensions dialog in Visual Studio to install.
- Debugging stability This version sees a big improvement in debugging stability and consistency, make sure you have the latest VS extensions installed.
- MicroGraphics refactoring We've spent a lot of time optimizing and refactoring our Meadow.Foundation APIs, this release sees some big changes (some breaking) that both simplifies and brings consistency to Meadow's graphics APIs.
Updating
There is no OS change for this release so you do not need to flash your Meadow board, but make sure you're running b6.0 if you haven't already updated.
There are new nuget packages, a new Meadow CLI and new Visual Studio extensions.
Start by installing the latest version of the CLI (v0.15.1) by running:
dotnet tool update Wildernesslabs.Meadow.CLI --global --version 0.15.1
Visual Studio Extensions
The Visual Studio for Windows extension has been reworked and refactored. This was necessary to support Visual Studio 2022 on Windows but also gave us the opportunity to carefully review the code for stability and usability. Deploying and debugging on Windows 10 & 11 should be a lot more stable and consistent. And there's more goodness coming in future releases :)
Note - Visual Studio 2022 for Mac isn't supported - at the time of this release, the VS4Mac 2022 preview doesn't (yet) support extensions.
Known Issues - In rare occasions you may experience deployment failures. If the failures are consistent, you may need to disable/enable or re-install the Meadow extension.
We're working on the issue. If you experience the problem and can provide a consistently reproducible set of steps, please file an issue. Thank you!
Meadow.CLI
The CLI receives more stability improvements and two new commands:
meadow use port
can be used to set a preferred serial portmeadow file delete all
will remove all files from your Meadow device
Meadow.Core
Note: Breaking Change - SPI Bus speed is now defined as a Meadow.Units.Frequency
instead of an integer. To update, in most cases you'll replace your old int value with new Meadow.Units.Frequency(value)
.
This also enabled Meadow.Foundation drivers to expose a DefaultSpiBusSpeed
property (details below).
Meadow.Foundation
This release brings a big list of stability fixes, API updates and performance improvements - see the Bug fixes below for the complete list.
- New BB Q10 Keyboard driver Ever wanted a BlackBerry-style keyboard for your Meadow projects? You can now use Solder Party's keyboard with Meadow
- ePaper display performance Full screen redrawing speed is 10-15% faster on most ePaper displays
- Breaking Change: Renamed GraphicsLibrary to MicroGraphics - We renamed the
GraphicsLibrary
class toMicroGraphics
to bring the class inline with branding and documentation, all instances in your code will need to be renamed - Breaking Change:
DisplayBase
->IGraphicsDisplay
- We deprecatedDisplayBase
and replaced it withIGraphicsDisplay
- all graphics displays now implement this interface - Breaking Change:
FontBase
->IFont
- We deprecatedFontBase
and replaced it withIFont
- all font classes now implement this interface - Moved graphics enums out of GraphicsLibrary - This is API cleanup, several enums were nested in the
GraphicsLibrary
class, and have been moved directly into theMeadow.Foundation.Graphics
including:ColorType
,ScaleFactor
,TextAlignment
, andBitmapMode
- Samples updated to support Meadow V2 - All Meadow.Foundation samples updated to run on the Meadow V2 boards by default, if you're using V1 boards change the
MeadowApp
class signature fromApp<F7MicroV2, MeadowApp>
toApp<F7Micro, MeadowApp>
(remove theV2
) - SPI peripherals now have a default value - No more guessing on the appropriate SPI bus speed for peripherals, all SPI drivers now have a public
DefaultSpiBusSpeed
of typeMeadow.Units.Frequency
Bug fixes
Look at this enormous list of bug fixes! We're getting close to v1.0 Release Candidate, folks!
- #82 Error flashing F7 OS from a non-english OS
- #92 Conflicting use of the -v flag
- #116 Better user-feedback when OS files aren't downloaded
- #117 Feature request: Add a delete all command
- #141 Add I2C defaults to all related drivers
- #191 Switching Antennas throws an exception
- #191 Can't use font scaling with TextDisplayMenu
- #195 Sensor.Atmospheric.BME280 - never turns changes mode from Sleep to either Forced or Normal
- #209 Out of Bounds exception if graphicslibrary is used to draw off screen
- #211 Color WithBrightness always returns black
- #213 Not all display drivers respect IgnoreOutOfBoundsPixels
- #214 Not all display drivers implement DrawBuffer
- #215 Replace DisplayBase with IGraphicsDisplay
- #218 Replace FontBase with IFont
- #219 ePaper drivers set the dataCommandPort state set repeatedly when updating the display
- #220 Add consistent SPI defaults params to SPI drivers
- #221 Ili9341 can't pass null for reset pin
- #222 Bme280 missing ctor for SPI that takes an IPin
- #225 BME680 missing filterable observable support
- #226 Driver request: BBQ10Keyboard
- #228 Update Meadow.Foundation samples to V2 signature
- #229 Calling DisplayTest in the ST7789 sample crashes
- #233 Fix Max7219 default SPI speed
- #235 VL53L0X Sample appears to be out of date
b6.0
This is a big new release with huge new features and lots of optimizations and improvements, including:
- Debugging - What what?! Yup; in-IDE debugging in Visual Studio for Windows, Mac, AND VS Code.
- Device/OS Configuration - Device and OS settings can now be configured at build time via yaml config files.
- .NET Standard 2.1 Fixes - The last of the .NET Standard 2.1 deployment stuff is in, fixing
System.Text.Json
. - Faster, More Reliable Networking - There have been a number of big optimizations in the networking stack promising much more reliable networking.
- Improved Deployment - App and OS deployment has undergone a massive update, offering a more reliable experience.
- Up to 20x Graphics Performance Improvements - New graphics optimizations to improve drawing performance, especially for fills and rectangles.
- Meadow.Foundation Improvements - Fixes, optimizations and stability improvements plus new buffer classes to manage in-memory graphics/sprites.
Updating
This is a full stack release requiring an OS update, new nuget packages, a new Meadow CLI and new Visual Studio extensions. Start by making sure you have the latest version CLI (v0.15.0) by running:
dotnet tool update Wildernesslabs.Meadow.CLI --global
Meadow.OS
Debugging
Long awaited, in-IDE, on-device debugging is here! Now you can debug Meadow apps just like any other .NET app, with full support in Visual Studio for Windows, Mac, and even VS Code! You can even debug from the command line using the Mono Soft-Debugger (SDB) via Meadow.CLI.
Configuration
It's now possible to have Meadow.OS automatically connect to a preferred WiFi network, get the time from NTP servers, and more, all via configuration settings defined at build time.
You can also configure the name of the device, and more.
For more information, check out the Configuration guide.
Network Time Protocol (NTP)
The OS now uses NTP to maintain correct world time! It can be configured to poll multiple NTP servers.
.NET Standard 2.1 Nuget fixes (System.Text.Json)
A new deployment method for the .NET core libraries removes the build issues brought on by using a Nuget to distribute framework assemblies such as mscorlib.dll and netstandard.dll. In order to benefit from these improvements you must ensure that you have:
- Update Meadow CLI to version 0.15.0 or later
- Remove all references to the
WildernessLabs.Meadow.Assemblies
nuget (primarily by updating to the latestMeadow.Core
)
Meadow.Core
F7 Device Coprocessor Lifecycle Cleanup
The Coprocessor
on F7 devices are automatically initialized during device startup, so when using the WiFiAdapter
or BluetoothAdapter
, you no longer need to initialize the coprocessor first.
- Breaking Change - The
InitCoprocessor()
,InitWiFiAdapter()
, andInitBluetoothAdapter()
methods are no longer necessary, and are either inaccessible or have been removed entirely.
Added Full-Duplex Support to IByteCommunications.Exchange()
and SpiPeripheral
The IByteCommunications.Exchange()
method now has an optional parameter of DuplexType
:
void Exchange(Span<byte> writeBuffer, Span<byte> readBuffer, DuplexType duplex = DuplexType.Half);
This enables protocols that support full-duplex communications (data received at the same time as it's sent) to be supported at the peripheral level, rather than having to use the bus class directly.
Previously, if you wanted to do full-duplex communications, you needed to use the SpiBus.Exchange()
method, which meant passing the chip select pin. This streamlines that workflow.
Meadow.Foundation
Pixel displays and microGraphics
The microGraphics Library in Meadow.Foundation received some new capabilities and a performance boost.
We've added a several display buffer classes designed to manage data for specific color bit depths and they're now being used as the off-screen buffer for every pixel display driver.
Why do we care? :) This has several benefits:
All of the buffer logic was refactored into common classes so any display-specific optimizations are now common across similar display drivers (more performance!).
We spent time optimizing buffer writing logic for each class improving performance even more. Filled rectangles are at least 5x faster and full screen fills on color displays are 20x faster.
We can now create buffers outside of display drivers - are you using jpegs? You can now quickly add all of that data to a 24bit buffer making it much easier to manage. Want to create and store sprites for game logic - that's now much easier.
Maple web server
General API cleanup and modernization
Added support for parameter routing!