Readiness report

ODrive v3 Brushless Servo Drive · 2026-09-03 15:54 · complete · 21 searches, 9 pages fetched

Download PDF

Cybersecurity — software & network: Do not place on an open network · 18 findings

Details in the Cybersecurity section of the report below.

Readiness: ODrive v3 Brushless Servo Drive

Verdict: At risk · 2026-09-03 · est. parts cost $210–$650 per station Cybersecurity — software & network: Do not place on an open network

This is the cold check — no previous readiness report exists, so this report is the baseline every future check will measure drift against. Every individual component on the bill of materials can be ordered today, several of them from more than one distributor, and the two parts that looked troubled turned out to have evidence-verified substitutes. The problem is the centrepiece. The vendor's own product page calls the board "ODrive v3.6 (NRND)" and says "Recommended to use ODrive S1 instead"; the vendor's comparison page says the v3.6 "is approaching its end of life, and strongly recommended against for new and existing designs". The recommended replacement does not replace this lab: the S1 controls one motor where this lab drives two, and the same comparison table marks the v3.6 with an X for both "Next-Gen Firmware Support" and "ODrive GUI Support" — the successor boards run a different, closed software stack, which is exactly what the lab's snapshot records. The repository holds no Gerber or fabrication files, so the board cannot be rebuilt from the lab's own materials either. The lab runs today on boards still listed at $259 and on surplus stock; it has no supported path beyond that.

Action required

Part Problem Recommended action
ODrive v3.6 board assembly Vendor-declared NRND and approaching end of life; the recommended successor (ODrive S1) is single-axis and on an incompatible closed firmware stack Buy the boards and spares now while the vendor still lists them at $259.00; start planning a curriculum migration, because the successor hardware needs a different lab
NTCG163JF103FT1 (inverter FET thermistor, ×2) Active on paper but zero stock at all five ECIA distributors (DigiKey 12-week factory lead, Mouser 55,997 on order, Future 116,000 on order) Substitute ERT-J1VG103FA at $0.19 with 605,202 in stock — a parametrically verified match (see Substitutes)
NVMFS5C612NLT1G (inverter MOSFETs, ×12) Lifecycle status Not For New Designs; ECIA lifecycle risk Med Still 45,000 in stock at $7.73, but switch to NVMFS5C612NLET1G — Active, $5.54, identical package and ratings
NVD5C668NLT4G (brake-driver MOSFET) Out of stock at DigiKey with a 57-week factory lead; only 1 of 5 ECIA distributors holds any Order from Mouser (2,389 in stock @ $3.08). DigiKey's suggested alternate IPD50N06S409ATMA1 was checked and is Discontinued at DigiKey with zero stock anywhere — do not use it
Low-side current shunt resistors (4–6) The snapshot's representative part number WSL2512R0010FEA exists in no catalog, and the lab's materials never state the board's actual shunt value Read the fitted shunt value off the board or from the firmware's board-revision constants before ordering, then buy the matching WSL2512 value at ≥2 W
24 V DC bus supply Not a sourcing problem but a shopping hazard: the same search returns 30 W units (MEAN WELL RPS-30-24 at $12.90, HDR-30-24 at $13.40) alongside the 30 A units this lab needs Order by wattage, not by the model number's digits — the lab needs a 700 W-class supply

Cybersecurity — software & network

Do not place on an open network — The GUI's backend daemon listens on all interfaces with no authentication on handlers that command motor motion, and it runs on an end-of-life Electron and Vue stack whose pinned dependencies carry critical advisories with no in-version fix.

Component Version How known Support status
ODriveGUI (Electron desktop application) 0.1.0 read from project (the version field of GUI/package.json (fetched/02-package.json)) —
electron 15.5.5 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json)) unsupported since 2022-05-24
vue 2.6.11 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json)) unsupported since 2022-07-01
vuex 3.5.1 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json)) —
socket.io-client 3.0.4 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json)) —
socket.io-parser 4.0.2 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json), resolved under socket.io-client) —
xmlhttprequest-ssl 1.5.5 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json), resolved under socket.io-client) —
ws 7.2.5 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json)) —
chart.js 2.9.3 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json)) —
chartjs-plugin-streaming 1.8.0 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json)) —
uuid 8.2.0 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json)) —
parseuri 0.0.6 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json), resolved under socket.io-client) —
vue-template-compiler 2.6.11 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json)) —
@vue/cli-service 4.4.6 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json)) —
@babel/traverse 7.10.4 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json), build toolchain) —
cipher-base 1.0.4 read from project (pinned in GUI/package-lock.json (fetched/01-package-lock.json), build toolchain) —
ODriveGUI backend daemon (Flask + Flask-SocketIO) not determined unpinned (GUI/server/odrive_server.py imports flask, flask_socketio, flask_cors and engineio; no version constraint for any of them exists anywhere in the repository) —
odrivetool / odrive (PyPI host control tool) not determined unpinned (tools/requirements.txt contains only an index URL and '-e .'; tools/setup.py install_requires lists ipython, PyUSB, requests, IntelHex, matplotlib, monotonic and setuptools with no version pins) —
ODrive embedded firmware 0.5.6 inferred (recorded in the lab snapshot as the top release in CHANGELOG.md; CHANGELOG.md was not fetched this run) —
STM32CubeMX HAL 1.19.0 inferred (recorded in the lab snapshot from CHANGELOG.md; not fetched this run) —
ARM CMSIS-DSP not determined not determined (no version is stated in the lab's sources) —
Firmware build toolchain (Tup, GNU Make, arm-none-eabi-gcc) not determined not determined (no versions are stated in the repository root files) —
ODriveArduino / ODriveEnums.h not determined not determined (the Arduino library carries no version pin) —
Component Finding Severity Fix available?
@babel/traverse The build toolchain pins @babel/traverse 7.10.4, which can be made to execute attacker-controlled code while compiling — it only matters for someone who builds the GUI from source. — GHSA-67hx-6x53-jw92 critical Mitigation only — build dependency only; regenerate the lockfile before building the GUI from source (fixed at 7.23.2).
cipher-base The build toolchain pins cipher-base 1.0.4, which skips type checks and can be fed crafted data to rewind a hash — it only matters for someone who builds the GUI from source. — GHSA-cpq7-6gpm-g9rc critical Mitigation only — build dependency only; regenerate the lockfile before building the GUI from source (fixed at 1.0.5).
socket.io-parser The pinned socket.io-parser 4.0.2 accepts malformed packets without validating them, so anything that can connect to the GUI's daemon socket can crash it or exhaust its memory. — GHSA-qm95-pgcg-qqfq, GHSA-2m8v-j782-fhvr, GHSA-677m-j7p3-52f9 critical No — project pins socket.io-client ^3.0.4 in GUI/package.json, which resolves socket.io-parser to 4.0.2; the fix starts at 4.0.5.
xmlhttprequest-ssl The pinned xmlhttprequest-ssl 1.5.5 allows code injection and does not validate TLS certificates properly, so traffic between the GUI and its daemon can be tampered with. — GHSA-h4j5-c7cj-74xg, GHSA-72mh-269x-7mh5 critical No — project pins socket.io-client ^3.0.4 in GUI/package.json, which resolves xmlhttprequest-ssl to 1.5.5; the fix starts at 1.6.2.
chart.js The live-plotting library is pinned at chart.js 2.9.3, which is vulnerable to prototype pollution from the data it is given. — GHSA-h68q-55jf-x68w high Yes — update to 2.9.4.
electron The GUI runs on Electron 15.5.5, which carries 38 known advisories including context-isolation escapes and use-after-free bugs, so content the GUI renders could break out and run code on the lab PC. — GHSA-qqvq-6xgj-jw8g, GHSA-532v-xpq5-8h95, GHSA-9wfr-w7mm-pc7f, GHSA-h7rp-cf8h-j98x (+2 more) high No — project pins electron ^15.5.5 in GUI/package.json; the earliest fixed builds are Electron 22.3.25 and later.
ws The WebSocket library carrying GUI traffic is pinned at ws 7.2.5, which can be exhausted into a denial of service by a crafted request, taking the GUI's link to the drive down. — GHSA-96hv-2xvq-fx4p, GHSA-3h5v-q93c-6h6q, GHSA-6fc8-4gx4-v693 high Mitigation only — regenerate the lockfile to pick up ws 7.5.11 within the same major version, or keep the GUI off shared networks.
parseuri parseuri 0.0.6, which socket.io-client uses to parse the daemon's address, can be hung by a crafted URL, and no fixed version exists. — GHSA-6fx8-h7jm-663j moderate Mitigation only — no fixed version has been published; the parser is only reached with the address the GUI itself supplies.
uuid uuid 8.2.0 is missing a buffer bounds check in its v3/v5/v6 generators. — GHSA-w5hq-g745-h8pq moderate No — project pins uuid ^8.2.0 in GUI/package.json; the fix starts at 11.1.1.
vue-template-compiler vue-template-compiler 2.6.11 can be induced to emit cross-site-scripting into a compiled template, and no fixed version exists for the Vue 2 line. — GHSA-g3ch-rx76-35fx moderate Mitigation only — no fixed version has been published for Vue 2's compiler; it is a build-time dependency.
vue vue 2.6.11 has an inefficient regular expression in parseHTML that can be made to hang the GUI. — GHSA-5j4c-8p2g-v4jx low No — requires platform migration (the fix is in the Vue 3 line).
electron Electron 15 reached end of life on 2022-05-24 and receives no further security updates, so the advisories against the pinned 15.5.5 build have no fix inside that major version. posture No — requires platform migration.
ODriveGUI backend daemon (Flask + Flask-SocketIO) The daemon that the GUI talks to starts with socketio.run(app, host='0.0.0.0', port=5000), so it listens on every network interface of the lab PC rather than only on localhost. posture Mitigation only — bind the daemon to 127.0.0.1, or keep the lab PC off shared networks and behind a host firewall.
ODriveGUI backend daemon (Flask + Flask-SocketIO) None of the daemon's socket.io handlers require authentication, and they include setProperty and callFunction, so anyone who can reach port 5000 can change the drive's configuration and command the motor to move. posture Mitigation only — isolate the lab PC on its own network segment and never leave a motor able to move freely while the bus is powered.
ODriveGUI backend daemon (Flask + Flask-SocketIO) The daemon accepts connections from any web origin: SocketIO is created with cors_allowed_origins="*" and Flask-CORS is enabled with support_credentials=True, so any page the lab PC browses can open a socket to it. posture Mitigation only — restrict cors_allowed_origins to the GUI's own origin.
ODriveGUI backend daemon (Flask + Flask-SocketIO) The daemon's Flask session key is hardcoded in the public repository as app.config['SECRET_KEY'] = 'secret', so any session cookie it issues can be forged by anyone who has read the source. posture Mitigation only — set SECRET_KEY from an environment variable to a random value.
odrivetool / odrive (PyPI host control tool) Dependencies unpinned: 8 of 8 in tools/setup.py (ipython, PyUSB, requests, IntelHex, matplotlib, monotonic, setuptools, pywin32) — 'pip install odrive' installs whatever is current, so the tool students run against the drive has no checkable security state. posture Mitigation only — pin versions / use a lockfile.
vue Vue 2.6 reached end of life on 2022-07-01, so the GUI's UI framework is no longer receiving security fixes. posture No — requires platform migration.

What this means for your lab

The desktop GUI that comes with this lab starts a small server on the lab PC, and that server listens on every network connection the PC has, not just on the PC itself. It asks for no password, and the commands it accepts include changing the drive's settings and telling the motor to move. In practice that means anyone else on the same campus or lab network, while the GUI is open, could spin a motor that is bolted to a bench or a robot arm - a safety problem before it is a data problem. The GUI itself is also built on a version of Electron and of Vue that stopped receiving security updates in 2022, and the versions its lockfile pins carry several serious known flaws with no fix available inside those versions. Nothing in the drive's own firmware was checkable - there is no vulnerability database for vendor microcontroller firmware - so treat 'not checked' there as unknown, not as safe. What to do: run the GUI only on a PC that is not on the shared campus network, or on an isolated lab segment; keep the motor mechanically restrained or unloaded whenever the bus is powered and the GUI is open; and raise this with campus IT before connecting any lab PC running this software to a network they manage.

Not checked

  • ODrive embedded firmware 0.5.6: vendor firmware for an embedded microcontroller; no advisory database covers it, and CHANGELOG.md was not fetched this run
  • STM32CubeMX HAL 1.19.0: vendor microcontroller HAL package; no advisory database covers it
  • ARM CMSIS-DSP: no version is stated in the lab's sources, so there is nothing to look up
  • Firmware build toolchain (Tup, GNU Make, arm-none-eabi-gcc): versions are neither pinned nor stated in the repository
  • ODriveArduino / ODriveEnums.h: Arduino library with no version pin, and no advisory database covers the Arduino ecosystem
  • odrivetool / odrive (PyPI) and its dependencies: installed unpinned via 'pip install odrive'; no exact version exists to check
  • Flask, Flask-SocketIO, Flask-CORS, python-engineio (GUI backend daemon): imported by GUI/server/odrive_server.py with no version constraint anywhere in the repository; no exact version to check
  • Host operating system and Python runtime: no version or codename is stated in the lab's materials
  • 893 further dependencies in package-lock.json: beyond the 500-dependency automatic check cap (e.g. dotenv, dotenv-expand, duplexer, duplexer3, duplexify)

Parts

Active integrated circuits and semiconductors

Part Spec/Package Status Stock Price Source
STM32F405RGT6 64-LQFP, VDD 1.8–3.6 V, ARM Cortex-M4F Active DigiKey stock not reported; Arrow 2,009 $12.50 (DigiKey) DigiKey; Arrow $8.278; Mouser 0 (27,739 on order)
STM32F405RGT6TR (reel variant) 64-LQFP (10x10), VDD 1.8–3.6 V Active 198 $13.25 DigiKey
DRV8301DCAR (×2) 56-HTSSOP / 56-PowerTFSOP, supply 6–60 V Active 3,888 $8.73 DigiKey; Mouser 30 @ $8.52
NVMFS5C612NLT1G (×12) 8-PowerTDFN 5-lead / 5-DFN 5x6, 60 V, 36 A (Ta) / 235 A (Tc) Not For New Designs 45,000 $7.73 DigiKey; Rochester 240,000 @ $2.03; Mouser 2,269 @ $5.79
NVD5C668NLT4G TO-252-3 / DPAK, 60 V, 49 A (Tc) Active (57-week DigiKey lead) 0 at DigiKey; Mouser 2,389 $3.01 (DigiKey list) Mouser @ $3.08 is the only stocking distributor
NTCG163JF103FT1 (×2) NTC 10 kΩ, 3380 K, ±1%, 0603 (1608 metric) Active (12-week lead) 0 at all 5 ECIA distributors $0.18 DigiKey (backorder only)
Low-side shunt resistors (4–6) 0.5 mΩ or 1.0 mΩ, ≤1%, ≥2 W, 2512 or 1206 not checked — — Representative MPN WSL2512R0010FEA is in no catalog and no ECIA distributor lists it

Electromechanical and external hardware

Part Spec/Package Status Stock Price Source
JS102011SAQN (DFU/boot switch) SPDT slide, 300 mA DC / 6 V, SMT right angle, 2.00 mm actuator Active 57,265 $0.85 DigiKey
AMT102-V (quadrature encoder, 1–2) Supply 3.6–5.5 V, 2–8 mm open-centre, motor/chassis mount Active 3,774 $34.23 DigiKey (Same Sky, formerly CUI Devices)
ST-LINK/V2 (SWD programmer) USB dongle, 3.3 V SWD Active 7,336 $25.65 DigiKey; the vendor page confirms the ST-Link is the right tool for the v3.6
External brake resistor (0.5 Ω, ≥50 W) Chassis-mount wirewound, aluminium housed Readily available (and shipped with a new board) — $7.95 Parts Connexion (Riedon 0R5, 50 W, ±1%); also $9.53 RS - America
Motor phase thermistors (up to 2) 10 kΩ NTC probe, motor-embedded or lug Readily available — $7.19 Walmart - Envistia Mall; also $1.39 Vetco, $3.32 TE Connectivity
DC bus power supply (24 V, 30 A) 720 W-class switching supply or LiPo pack Readily available — $70.49 Walmart - Tasharina Corp; also $101.49 eBay, $139.99 Powerwerx
Brushless motor, 5065-class 270 KV (1–2) 3-phase BLDC outrunner, phase R 10 mΩ–1 Ω Readily available — $89.00 ODrive Robotics (the vendor's own motor); also $34.00 eBay, $60.50 Mayrc
ODrive v3.6 board assembly 140 x 50 mm PCBA, 12–56 V in, dual 3-phase inverter Obsolete / NRND — vendor end-of-life not stated on the fetched page $259.00 ODrive Robotics; clone listing $47.55 USA.Banggood (unverified)

Substitutes

For part Substitute Differences Verified Judgment
NVMFS5C612NLT1G (NRND) NVMFS5C612NLET1G — onsemi, Active, $5.54, 1,695 in stock VDS 60 V = 60 V; ID 38 A (Ta) / 250 A (Tc) vs 36 A (Ta) / 235 A (Tc) — exceeds, acceptable; gate drive 4.5 V / 10 V identical; Ciss 6660 pF identical; dissipation 3.8 W (Ta) / 167 W (Tc) identical; TJ -55 to 175 °C identical; package 8-PowerTDFN 5-lead / 5-DFN 5x6 identical. Cheaper than the original and Active where it is NRND verified: package/case + supplier device package, drain-source voltage, gate drive voltage, continuous and pulsed current (DigiKey parametrics on both parts). Not verified: pin-for-pin lead arrangement and RDS(on) — the snapshot's ≤3 mΩ requirement is in neither parametric block; what the trailing "E" encodes is assumed, not evidenced Acceptable
NTCG163JF103FT1 (zero stock) ERT-J1VG103FA — Panasonic Industry, $0.19, 605,202 in stock 10 kΩ = 10 kΩ; ±1% = ±1%; B-value tolerance ±1% = ±1%; B value 3380 K = 3380 K; 0603 (1608 metric) = 0603 (1608 metric); 100 mW = 100 mW; -40 to 125 °C identical. DigiKey classes it a Parametric Equivalent. Caveat: its own status is Last Time Buy (ECIA lifecycle risk High), but 8 distributors hold stock — buy the lab's lifetime supply at once verified: package/case + mounting type, nominal resistance, resistance tolerance, B-value tolerance, power rating, operating temperature (DigiKey parametrics on both parts); B value 3380 K (DigiKey description on both). Not verified: the full resistance-vs-temperature curve against the firmware's derating table — no datasheet was fetched Acceptable (first choice)
NTCG163JF103FT1 (zero stock) NCP18XH103F03RB — Murata, $0.18, 160,259 in stock Same parametric match as above on every field; its own status is Not For New Designs (ECIA lifecycle risk Med, supply-chain risk Low), and Avnet holds 340,000 @ $0.06189 at qty 4000 verified: package/case + mounting type, nominal resistance, resistance tolerance, B-value tolerance, power rating, operating temperature (DigiKey parametrics on both parts); B value 3380 K (DigiKey description on both). Not verified: full R-T curve vs the firmware's derating table Acceptable (second choice)
NVD5C668NLT4G (57-week lead) IPD50N06S409ATMA1 — Infineon Checked on DigiKey's own suggestion and rejected: status Discontinued at DigiKey, no price, no stock; ECIA supply-chain risk High, 0 of 2 distributors with stock verified: lifecycle status and stock at DigiKey and across ECIA (part_lookup this run) Rejected — worse than the original
NVD5C668NLT4G (57-week lead) DMTH6010SK3Q-13 — Diodes Inc., $2.03 60 V VDS meets the ≥60 V requirement; TO-252 matches the package family by description only; continuous current 16.3 A vs the original's 49 A (Tc) — the 70 A pulsed rating is what a brake chopper needs, and the snapshot states no numeric brake current, so this cannot be settled from evidence not verified: footprint and lead arrangement, RDS(on), pulsed-current adequacy — no parametric block and no stock figure were returned for this part, and no datasheet was fetched Plausible, unverified — prefer buying the original from Mouser
Low-side shunt (representative MPN not in catalog) WSL25121L000FEA — Vishay Dale, Active, $1.85, 10,930 in stock 1 mΩ matches the snapshot's 1.0 mΩ option; ±1% meets ≤1%; 2512 (6332 metric) matches; but it is rated 1 W against the snapshot's stated ≥2 W — it falls short of a stated requirement verified: package/case, resistance, tolerance, power rating (DigiKey parametrics). Not verified: nothing about the board's actually fitted shunt — the lab's materials never state it Not acceptable as specified — it confirms the family is stocked, but check the board's real shunt value and rating first
ODrive v3.6 board ODrive S1 — $149.00, backorder shipping by September 14 Axis count 1 vs the lab's 2 — hard stop, this lab is explicitly a dual-axis controller with per-axis firmware objects; voltage 12–48 V (50.5 V max) vs the lab's 12–56 V — narrower, falls short at the top; and the vendor's comparison table marks the v3.6 X for both "Next-Gen Firmware Support" and "ODrive GUI Support" while the S1 is ✓ for both — the two boards are on different software stacks verified: axis count, voltage range, continuous current, price and lead time (vendor product page fetched this run); firmware and GUI stack difference (vendor comparison table fetched this run) Not acceptable — replaces the hardware but invalidates the lab
ODrive v3.6 board Third-party "ODrive V3.6" clone — $47.55, USA.Banggood The claim this substitution hinges on — that the board carries the same STM32F405/DRV8301 silicon and runs the same open-source v3.6 firmware image — was not confirmed; the shopping result exposes only a Google Shopping redirect, not the seller's own product page not verified: silicon, firmware compatibility, board revision, quality, warranty — nothing beyond the listing title and price Plausible, unverified — confirm compatibility with the seller before treating the price as equivalent value

Verify any substitute against its own datasheet before ordering — the checks above are made against distributor parametric data and vendor pages, which is not the same as reading the part's specification sheet.

Other dependencies

  • PCB fabrication files — not available. The snapshot records that Gerbers, layer count, copper weight and exact outer dimensions are absent from the uploaded repository files, and nothing found this run contradicts that. The board cannot be re-fabricated from the lab's own materials. The vendor product page does mention "3D files available to download from this OnShape page" — mechanical data, not fabrication data, and that link was not followed.
  • Vendor shop, shop.odriverobotics.com — live. Both the v3.6 and S1 product pages were fetched successfully this run.
  • Vendor documentation, docs.odriverobotics.com — live. The hardware comparison page was fetched successfully this run.
  • GitHub repository, github.com/odriverobotics/ODrive — live. The GUI directory listed successfully (12 entries) and five files were fetched from the master branch this run.
  • Main project site (www.odriverobotics.com), the Discourse forum, the community-chat link, Travis CI (travis-ci.org/madcowswe/ODrive) and the GitHub Actions link — not checked. None were fetched this run. Both CI references point at a legacy .org Travis URL and a madcowswe/ repository path; worth an eyeball at the next check.
  • Board running change — mechanical. The fetched vendor page warns that "Due to supply constraints ODrive v3.6 may come with electrolytic capacitors that are 2mm taller taller than previous versions (10.8 - 12.8mm tall)" — a clearance detail for anyone reusing an existing enclosure or mounting.

Watch list

  • The ODrive v3.6 board itself. Vendor-declared NRND and end-of-life, with the successor on an incompatible stack. This is the line most likely to end the lab rather than merely inconvenience it — check whether the vendor still lists it at every future check.
  • NTCG163JF103FT1 inverter thermistors. Zero stock at all five ECIA distributors today, and both verified substitutes carry their own lifecycle flags (Last Time Buy, Not For New Designs). This part family is retiring; buy ahead.
  • NVD5C668NLT4G brake-driver MOSFET. One stocking distributor and a 57-week factory lead — a single Mouser stock-out turns this into a hard-to-obtain part.
  • NVMFS5C612NLT1G inverter MOSFETs. Already Not For New Designs with ECIA lifecycle risk Med. Deep stock today (45,000 at DigiKey, 240,000 at Rochester), but NRND parts do not restock.
  • The low-side shunt resistors. Still unresolved: nobody has established what value and rating the board actually carries. Worth settling once, from a real board, so future checks have something exact to look up.
  • STM32F405RGT6 supply concentration. Active and low-risk, but only 1 of 5 ECIA distributors held stock this run, with tens of thousands on order elsewhere — a thin position for the part the whole board is built around.