Milestones
No milestones defined.
Items (2)
| Code | Status | Severity | Kind | Title | Date |
|---|---|---|---|---|---|
| E-002 | open | blocking | issue | CRPS module init fails — PMBus register length mismatch (2-byte register set to 1 byte) | 2026-06-09 |
| E-001 | closed | blocking | issue | CRPS module fails to load — MCP2221A HID device permission denied on /dev/hidraw0 | 2026-06-08 |
Requirements
| Code | Status | Category | Title | Statement | Acceptance |
|---|---|---|---|---|---|
| REQ-EL-001 | draft | compliance | RoHS Compliance | The design shall use only RoHS-compliant materials. All BOM items must have a valid RoHS certificate of compliance. | Valid RoHS certificate of compliance on file for all BOM line items. |
| REQ-EL-002 | draft | compliance | REACH / SVHC Declaration | The design shall comply with the REACH regulation. Any SVHC present above 0.1 % w/w in any article shall be declared. | REACH/SVHC declaration obtained from all component suppliers and filed in the project documentation. |
| REQ-EL-003 | draft | compliance | EMC Compliance | The design shall comply with applicable EMC standards for conducted and radiated emissions. | Pass pre-compliance scan and, where required, certified lab test. |
| REQ-EL-004 | draft | environmental | Operating Temperature Range | The design shall operate correctly and without damage across the full ambient temperature range specified in the design brief. | Functional test passes at minimum and maximum rated ambient in an environmental chamber. |
| REQ-EL-005 | draft | robustness | ESD Protection | All external interfaces shall tolerate ESD events of at least ±4 kV (contact) and ±8 kV (air) per IEC 61000-4-2 without permanent damage or loss of function. | ESD test passes at specified levels with no permanent damage. |
| REQ-EL-006 | draft | compliance | CE Marking Applicability | CE marking applicability shall be assessed at project start. If the product is placed on the EU / EEA market, it shall be CE-marked per the applicable EU directives (typically LVD, EMC Directive, RoHS Directive, and RED if any radio equipment), with a signed Declaration of Conformity on file. If the product is NOT placed on the EU / EEA market, the market scope decision shall be recorded as a `please_decision_create` so CE assessment can be skipped knowingly. | CE marking applicability assessed and the assessment recorded as a `please_decision`. For products in EU/EEA market scope: applicable EU directives identified, conformity assessment complete, signed Declaration of Conformity on file, CE mark properly affixed. For products outside EU/EEA market scope: a `please_decision` documents the market scope and the CE-skip rationale. |
| REQ-EL-007 | draft | quality | Test Limit Derivation Documented | Every test case that defines numeric measurement limits (low_limit, high_limit, nominal, tolerancePct) shall have a documented derivation explaining how those limits were chosen. | For each test case with numeric limits, evidence of derivation exists — `passCriterion` references the component values and tolerances in the measurement path, OR a linked `please_decision` documents the corner math, OR the implementing Maestro YAML carries a `Limit derivation` comment block citing such a decision. |
Test Cases
| Code | Status | Category | Title / Signal | Target | Pass Criterion | Linked REQ |
|---|---|---|---|---|---|---|
| TC-EL-001 | open | compliance | RoHS CoC Collection | — | Obtain and file RoHS certificate of compliance for each BOM line item before releasing the design to production. | REQ-EL-001 |
| TC-EL-002 | open | compliance | REACH Declaration Collection | — | Obtain REACH/SVHC declaration from each component supplier; file in the project documentation. | REQ-EL-002 |
| TC-EL-003 | open | compliance | EMC Pre-Compliance Scan | — | Run conducted and radiated emissions scan; verify results are below applicable limits. | REQ-EL-003 |
| TC-EL-004 | open | environmental | Temperature Range Functional Test | — | Operate unit at minimum and maximum rated ambient for at least 30 minutes each; verify correct function and no damage. | REQ-EL-004 |
| TC-EL-005 | open | robustness | ESD Immunity Test | — | Apply ESD events to all external connectors per IEC 61000-4-2 at ±4 kV contact / ±8 kV air; verify no permanent damage or loss of function. | REQ-EL-005 |
| TC-EL-006 | open | compliance | CE Marking + Declaration of Conformity Audit | — | Confirm a `please_decision` records the CE applicability assessment. For products in EU/EEA market scope: confirm applicable EU directives are identified, conformity assessment is complete, signed Declaration of Conformity is on file, and CE mark is affixed per directive requirements. For products outside EU/EEA market scope: confirm the `please_decision` documents the market scope and CE-skip rationale. | REQ-EL-006 |
| TC-EL-007 | open | quality | Limit Derivation Audit | — | For each test case in this project that has numeric limits, confirm at least one derivation source exists: (a) `passCriterion` field includes tolerance / component references, OR (b) a `please_decision` is linked covering the limit derivation, OR (c) the implementing Maestro YAML has a `Limit derivation` comment block citing a decision id. Reference example: PT-SIG.04 + `please_decision` D.03 in projectId 1. | REQ-EL-007 |
Verification Records
No verification records.
Issues
Symptom
After resolving the HID permissions issue (E-001), the CRPS module now fails during Crps.Reset() with:
Specified argument was out of the range of valid values.
(Parameter 'Tried to set a register with length 2 bytes to a length of 1')
at DeviceLibrary.PmBus.PmRegisterEntry.set_RawValue(Byte[] value)
at DeviceLibrary.PmBus.RegisterCollection.ReadDefinitions(PsmDeviceType type)
at DeviceLibrary.PmBus.RegisterCollection..ctor(PsmDeviceType type)
at DeviceLibrary.PmBus.RegisterCollection.Get(PsmDeviceType type)
at DeviceLibrary.PmBus.Chip..ctor(IFileLogging logger, Project parent, ParsedChip chip)
at DeviceLibrary.PmBus.Project..ctor(IModule owner, IFileLogging logger, IBusHandler handler, ProjectConfig cfg, String name, String sourceBusName, Int32 supportedClockSpeed, Boolean usePEC)
at AccordionUno.Modules.PmbusHandler.LoadProject(String base64ByteString)
at AccordionUno.Modules.PmbusHandler.SetValue(String name, String value)
at CrpsHandler.Crps.Reset()
at AccordionUno.Services.ExtensionModuleService.LoadModule(IModuleSettings m)
Root cause (suspected)
RegisterCollection.ReadDefinitions loads the PMBus register map for the CRPS PSU device type (PsmDeviceType). During loading it calls PmRegisterEntry.set_RawValue to set a default/initial value for a register — but the byte array supplied is 1 byte long while the register is declared as 2 bytes wide. This is a length mismatch between the register definition and the value initializer.
Likely causes:
- The CRPS device register definition file has a register declared with the wrong length (2 instead of 1, or vice versa).
- The default value initializer constructs a 1-byte array for a register that requires 2 bytes.
- A recent change to the device library or CRPS device definition introduced a regression.
What to check
- The
PsmDeviceTypedefinition for the CRPS PSU — find the register(s) declared as 2 bytes and verify their default value initializers. - Git log on
DeviceLibrary.PmBus/CrpsHandlerfor recent changes to register definitions. - Whether this error reproduces on A1 hardware / previous firmware version.
Context
Raised from project ETT00000005 R0 (B12 CB Test Station Upgrade Path). This is the second blocker on CRPS integration after E-001 (HID permissions — now resolved). Deadline 2026-06-25.
Symptom
When loading the CRPS extension module via AccordionUno.Services.ExtensionModuleService.LoadModule, the firmware throws:
Not permitted to open HID class device at /dev/hidraw0
at HidSharp.Platform.Linux.LinuxHidDevice.OpenDeviceDirectly(...)
at MCP2221IO.Device.Open()
at CrpsHandler.Crps.Reset()
at AccordionUno.Services.ExtensionModuleService.LoadModule(IModuleSettings m)
Root cause
The CRPS PSU connects via a Microchip MCP2221A USB HID bridge. On Linux, /dev/hidraw* nodes are owned by root:root with mode 0600 by default. The accordion firmware service runs as a non-root user and is denied access.
The device is physically present and enumerated — the OS finds it at /dev/hidraw0 — but the service user lacks read/write permission.
Fix
Add a udev rule targeting the MCP2221A by USB Vendor/Product ID. This is a one-time OS-level configuration — it does not grant the service sudo or root rights at runtime.
File to create on the A2: /etc/udev/rules.d/99-mcp2221.rules
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="00dd", MODE="0666"
After creating the file, reload udev and re-enumerate:
udevadm control --reload-rules
udevadm trigger
Then unplug and replug the CRPS USB cable (or reboot).
Verify the PID first:
lsusb | grep -i microchip
If the product ID differs from 00dd, substitute the correct value in the rule.
Alternatives (if broader device access is undesirable)
- Group-based: create a dedicated group, add the accordion service user to it, and scope the udev rule to that group with
GROUP="accordion", MODE="0660"— tighter than0666. - systemd
DeviceAllow: addDeviceAllow=/dev/hidraw0 rwandDevicePolicy=closedto the accordion service unit file.
Resolution
udev rule applied by Mikael Svensson 2026-06-09. Fix confirmed — HID open error no longer occurs; CRPS module now advances past USB device open. New error encountered further in initialization — see E-002.
Context
Raised from project ETT00000005 R0 (B12 CB Test Station Upgrade Path).
udev rule /etc/udev/rules.d/99-mcp2221.rules applied 2026-06-09. HID permissions error resolved. See E-002 for next blocking issue.
Design Rule Status
■ No violations ■ Warning ■ Error ■ Waived