GET /api/calibration/channels — list all calibration channels
GET /api/calibration/table — read the current calibration table
POST /api/calibration/table — write/apply a new calibration table
Alias / NetName interoperability — all resource read, write and transact endpoints now accept either a channel's Alias or its NetName interchangeably, making scripts portable across hardware revisions
.NET Client (AccordionQ2.WebApiClient 5.10.0 on NuGet)
Added CalibrationGroup with full calibration models and client registration
Added CalibrationGroup API documentation
Python Client (accordionq2 5.10.0 on PyPI)
Added CalibrationGroup with full calibration models and documentation
Migrated version scheme to setuptools-scm (version is now derived from git tag automatically)
UART Configuration
UartTransactionRequest now accepts numeric fields (BaudRate, etc.) as strings for flexible JSON serialisation
Added a default DeviceName fallback for UART transactions
PortName removed from UartTransactionRequest — port is resolved server-side from DeviceName
Full UART device configuration exposed: port, baud rate, bus type, flow control, parity
Module: ESH10000590 (Precision Source)
Split single DataBus into separate ADC bus and DAC bus for independent routing
Bus signal names renamed from MPIOxx → ADCxx / DACxx
Added NumericResultChannel wired to all ADC inputs; sample rate is applied to the ADS124S08 before acquisition
Added DigitalChannelDAC_GAIN to control AD5675R DoubleDacGain at runtime
Added MultiplexerChannelADC_GAIN to control ADS124S08 PGA gain (8 steps: GAIN_1 … GAIN_128)
Module: ESH10000662 (Light Table PSU)
Added virtual DigitalChannelHIGH_RANGE — when set to true, enables 0–5 V (2×VREF) range on both ADC and DAC of the AD5593R and immediately rewrites all DAC outputs with the correct codes for the new reference voltage
Device: AD5675R / AD567x_Base
DoubleDacGain can now be hot-switched at runtime without losing current channel voltages — all DAC outputs are rewritten automatically
Fixed: REF_SETUP register is now written during Reset() so the gain configuration is applied to hardware at startup
Device: ADS124S08
Implemented GetNumericResults for sequential per-channel acquisition
Fixed: PGA gain factor, conversion timing, and reported sample rate are now correct
🐛 Bug Fixes
Calibration
ESH10000556:OUTPUT_CURRENTLIMIT readback no longer returns a value affected by calibration Gain/Offset — the user-set value is now stored in the channel object on write and returned directly on read (matching OUTPUT_VOLTAGE behaviour)
ESH10000590:LoadCalibrationTable now uses StripFullNetName for keys so CSV files with short position-independent names are applied correctly (was silently no-op on every write-back)
ESH10000590:ApplyCalibrationValues now checks for key existence and logs an error instead of throwing NullReferenceException on missing keys
AD5593R / AD5592R / AD567x: DAC output values that calculate below 0 V due to a positive calibration offset are now clamped to 0 V with a warning log instead of throwing ArgumentOutOfRangeException — setting 0 on a channel with a positive offset no longer faults
HAL / Host
CommHandler: verbose communication logging disabled (ShouldLog = false) to reduce log noise
HardwareAbstractionImpl: FirmwareRevision now delegates to HostInformation rather than duplicating the logic
HostInformation: FirmwareRevision now uses an absolute path, handles empty results gracefully, and correctly strips the .version extension from the filename
⚙️ Infrastructure
CI: WebApiClient tests now exclude Integration and Performance categories that require live hardware
CI: WebApiClient build targets project files explicitly and uses the .NET 10 runner
5.9.0
Release
Release Date: Type: Feature Release
New/Improved
Changed how the UART transaction works through the WebApi
5.8.0
Release
Release Date: Type: Feature Release
Bug Fixes
Concurrent access could sometimes interfere with each other
5.7.0
Release
Release Date: April 22, 2026
Type: Feature Release
Bug Fixes
Accordion service in 5.6.0 had a faulty parameter, preventing start of the service.
5.6.0
Revoked!
Release Date: April 20, 2026
Type: Feature Release
Bug Fixes
WebAPI — First call after hardware reconnect returns 503 (accordionq2) Fixed a race condition in WaitForConnectionAsync(TimeSpan) where the old completed TaskCompletionSource was captured before the disconnect event had a chance to reset it. The first WebAPI call after a hardware restart would incorrectly fast-path through the wait and immediately return 503. The fix loops briefly until the TCS is properly reset before awaiting reconnection.
New Features / Changes
ESH10000534 — PoE RESTART_CLASSIFICATION channel (accordionuno) Added a RESTART_CLASSIFICATION digital output channel to the PoE module. Writing to it triggers a re-run of PoE classification (detect/power-enable/detect-class sequences). Also refactored PoE initialisation: SetRelay(POLARITY.NORMAL) is now called on successful init, and poe1 is nulled out on failure to allow clean retry.
Infrastructure / Internal
Protocol server — IPv4-only binding (protocolserver)
Both ProtocolServer and ProtocolClient now explicitly disable DualMode and bind to IPAddress.Any (IPv4) instead of IPv6Any. This resolves connectivity issues on targets where IPv6 dual-stack is not available.
TPS23881 — Register read logging enabled; dependency bumps (devicelibrary) Register reads now log at Info(log4net.ILog, object, string, int) level for diagnostics. Package versions bumped: CsvHelper 33.1.0, Iot.Device.Bindings 4.2.0, UnitsNet 5.75.0.
5.4.0
Release
Release Date: April 19, 2026
Type: Feature Release
NET10
Fixes for PoE R4, FE R4
Fixes for Accordion M1
5.2.0
Release
Release Date: April 12, 2026
Type: Feature Release
Fixes for communication issues
Added swagger + node red
Fully async
Added mDNS broadcasting
Support for Accordion M1
Bug fixes
4.1.1
Release
Release Date: March 5, 2026
Type: Feature Release
🎯 Overview
Release 4.1.1 introduces a revolutionary dual-connection network fallback system that dramatically improves network reliability and reduces failover time from over 100 seconds to just 10-12 seconds. This release also includes comprehensive diagnostic tools and complete documentation to support field deployment and troubleshooting.
✨ New Features
Dual-Connection Network Fallback
Fast Failover: Reduced DHCP timeout from 100+ seconds to 10-12 seconds
21 diagnostic sections covering all network aspects
Timestamped log files for support and troubleshooting
Includes NetworkManager logs, connection details, routing, DNS, and connectivity tests
🐛 Bug Fixes
Manual Connection Address Handling: Fixed NetworkManager limitation where manual connections must have at least one address during creation
Address Update Logic: Implemented atomic replacement strategy to avoid "cannot be empty" errors when updating static IP addresses
Timestamp Border Formatting: Fixed alignment in diagnostic script headers
📚 Documentation
New Documentation
README.md: Comprehensive project documentation with quick start guide, network architecture overview, and troubleshooting
NETWORK_FALLBACK_IMPLEMENTATION.md: Detailed technical documentation of dual-connection architecture, including configuration steps and expected behaviors
DIAGNOSTIC_SCRIPTS_README.md: Complete guide for using diagnostic tools with examples and troubleshooting workflows
Configuration Standards
.gitattributes: Enforces LF line endings for shell scripts across platforms
.vscode/settings.json: Consistent development environment configuration
🔧 Technical Improvements
Line Ending Management: Cross-platform compatibility for shell scripts (LF enforced)
Dependency Reduction: Replaced nslookup with ping for DNS testing, reducing package requirements
ARP Conflict Detection: Maintains arping-based conflict detection for static IP configuration
📊 Network States
With DHCP Server (Typical Deployment)
Active Connection: ESharp-eth0-DHCP
IP Addresses:
- 192.168.0.222/24 (Static, configured)
- 192.168.0.XXX/24 (DHCP, dynamic)
Gateway: From DHCP server
Internet: Available via DHCP gateway
Without DHCP Server (Direct Connection Mode)
Active Connection: ESharp-eth0-Direct
IP Addresses:
- 192.168.0.222/24 (Static only)
Gateway: None
Internet: Local subnet only
Failover Time: ~10-12 seconds from DHCP attempt
🚀 Deployment Impact
Performance
90% reduction in network failover time (100s → 10-12s)
Improved reliability with automatic fallback
Zero-downtime network reconfiguration
Operations
Simplified troubleshooting with diagnostic scripts
Color-coded status output for quick visual assessment
Comprehensive logs for support escalation
Self-documenting network configuration
Field Support
Quick network check can be run by field technicians without sudo
Full diagnostics capture all necessary information for remote support