79f7bdada3
skills: usbtest/usb-debug/usb-recover docs, hil runner notes
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:52 +07:00
411fc4127f
audio: drop stale EP-busy note in audiod_set_interface
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:49 +07:00
bab21a20ba
test/hil: usbtest.py runner + HIL integration
...
Binds the kernel usbtest driver (gadget-zero profile), runs the tier-based
battery, auto-recovers kernel-side hangs, and skips cases the host
controller cannot run (MosChip MCS9990 EHCI int-OUT).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:49 +07:00
5dbc15370c
example(usbtest): device-side peer for the Linux kernel usbtest battery
...
Gadget-Zero style source/sink on a vendor interface (alt0 empty, alt1
bulk+int+iso) plus EP0 ctrl_out; tier advertised in bcdDevice.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:48 +07:00
90d48c2a63
bsp(ch32): naked fsdev ISRs so nested USBD IRQs return safely
...
The three USBD lines nest under QingKe HWSTK; gcc's interrupt prologue
corrupts the return, so rely on the hardware stack and bare mret.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:48 +07:00
c97c0a12bc
dcd(ch32-usbfs): isochronous support
...
Double-buffered iso, EP3 1023-byte packets on V20x/V30x (10-bit
R16_UEP3_T_LEN), CH583 and V103 enabled at 64 B.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:45 +07:00
99044894aa
dcd(ch32-usbhs): re-queue the pending OUT read on clear-halt
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:41 +07:00
3fc60eafb3
dcd(musb): flush TX FIFO on halt; don't load a disarmed pipe
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:38 +07:00
0464636878
dcd(fsdev): don't disarm an armed endpoint on clear-halt toggle reset
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:35 +07:00
ad7acc849a
dcd(rp2040): re-issue in-flight transfer on clear-halt toggle reset
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:31 +07:00
4bbb23545a
dcd(nrf5x): errata 199 DMA workaround + iso alloc/activate
...
USBD drops tasks during EasyDMA without the 0x40027C1C latch (anomaly 199);
matches the nrfx reference driver.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:28 +07:00
93b57197f9
dcd(ip3511): iso alloc/activate; retire armed buffers via EPSKIP
...
Clear Active before Stall so a queued endpoint actually halts (UM11126
41.8.1); use the sanctioned EPSKIP+wait sequence for stall/reopen/activate.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:24 +07:00
7b1eb4f862
dcd(rusb2): iso alloc/activate; bound the FIFO-ready wait
...
An unpolled full iso-IN pipe keeps FRDY low forever and froze the stack
with IRQs masked; bound the spin and abort the FIFO access.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:21 +07:00
8ec71dca0d
dcd(samd): implement iso alloc/activate
...
Reserve the bank SIZE bucket once, re-enable per altsetting, and scrub the
bank-ready state so a stale armed bank cannot send before the class re-arms.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:18 +07:00
dfb53cb30c
dcd: route samd/rusb2/ip3511/nrf5x through iso alloc/activate
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:15 +07:00
fd63ad6c2b
usbd: forward vendor EP0 requests; clear ep state on iso activate
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:11 +07:00
33cabfe3f0
class/vendor: add interrupt/iso endpoint pairs and alt-setting support
...
Non-buffered per-type source/sink endpoints (bulk/int/iso) with manual RX
arming across altsettings.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01HeF2gZ1M7GWkz6Av4BpKPg
2026-07-09 23:38:08 +07:00
fcd5a0603e
Merge pull request #3756 from dxbjavid/rndis-data-offset-overflow
...
bound rndis data packet offset in handle_incoming_packet
2026-07-05 19:28:14 +02:00
0f61948954
bound rndis data packet offset in handle_incoming_packet
...
Signed-off-by: Javid Khan <dxbjavid@gmail.com >
2026-07-05 22:20:18 +05:30
536157cb98
Merge pull request #3738 from sauloverissimo/fix/midi2-fb-direction
...
feat(midi2): derive function blocks from the GTB descriptor
2026-07-05 17:46:14 +02:00
0309e7c016
ensure gtb is valid
...
Signed-off-by: HiFiPhile <admin@hifiphile.com >
2026-07-05 16:48:41 +02:00
3579ea1888
Merge pull request #3753 from Old-Ding/codex/usbd-driver-count-warning
...
Fix usbd empty builtin driver warning
2026-07-05 16:14:01 +02:00
073657a04e
Fix usbh empty builtin driver warning
...
Signed-off-by: HiFiPhile <admin@hifiphile.com >
2026-07-05 15:27:30 +02:00
19274b95a6
Fix usbd empty builtin driver warning v2
...
Signed-off-by: HiFiPhile <admin@hifiphile.com >
2026-07-05 15:25:34 +02:00
be2218e3d8
Merge pull request #3754 from Old-Ding/codex/usbtmc-status-byte-buffer
...
Fix USBTMC status byte interrupt buffer
2026-07-05 13:23:41 +02:00
6fc114c827
Merge pull request #3741 from dxbjavid/ncm-ndp-length-bound
...
bound ndp16 wLength against received ntb in recv_validate_datagram
2026-07-05 13:22:58 +02:00
2b978382d9
Fix USBTMC status byte notification buffer
...
Queue the USB488 READ_STATUS_BYTE interrupt notification through tud_usbtmc_transmit_notification_data so it uses the class notification endpoint buffer for the asynchronous transfer.
Fixes #2928
Generated-by: OpenAI Codex
Signed-off-by: aineoae86-sys <ai.neo.ae86@gmail.com >
2026-07-05 19:09:42 +08:00
7bc2e7d129
Merge pull request #3755 from Old-Ding/codex/usbtmc-notification-idle-xfer
...
Fix USBTMC notification endpoint claim
2026-07-05 12:47:30 +02:00
2d5f5c0cf2
clamped copied length to n
...
Signed-off-by: HiFiPhile <admin@hifiphile.com >
2026-07-05 12:45:55 +02:00
6d697c629e
fix sizeof(nth16_t) typo
...
Signed-off-by: HiFiPhile <admin@hifiphile.com >
2026-07-05 12:45:12 +02:00
6563ef3b27
fix ci
...
Signed-off-by: HiFiPhile <admin@hifiphile.com >
2026-07-05 12:35:03 +02:00
742ca33c8a
Fix USBTMC notification endpoint claim
...
Use usbd_edpt_claim() before queuing USBTMC notification data so the interrupt endpoint is reserved through the normal endpoint ownership path. Release the claim if the notification payload cannot be copied before the transfer is queued.
Fixes #2735
Generated-by: OpenAI Codex
Signed-off-by: aineoae86-sys <ai.neo.ae86@gmail.com >
2026-07-05 18:24:04 +08:00
6912f23618
Fix usbd empty builtin driver warning
...
Generated-by: OpenAI Codex
Signed-off-by: aineoae86-sys <ai.neo.ae86@gmail.com >
2026-07-05 15:38:17 +08:00
3439e9c8de
add ncm receive-path fuzz harness with out-of-bounds seed
...
folds the reproducer for the recv_validate_datagram bound into a small
self-contained fuzz target. it feeds a raw ntb straight into the validator
(the driver is pulled in so the static function is reachable) and ships the
crafted 64-byte ntb as a seed. the seed trips an asan heap-buffer-overflow
against the unpatched driver and is rejected cleanly with the wLength bound
in place.
2026-07-03 23:16:28 +05:30
41b8ad2039
Merge pull request #3748 from mikeysklar/fix-max3421-oscok-hang
...
max3421: prevent USB host hang at startup
2026-07-03 23:25:05 +07:00
37ea546aba
Merge pull request #3751 from cuolm/master
...
fix: correct video stack macro typo in video capture examples
2026-07-03 16:55:14 +02:00
0eb1928570
fix HID_STACK_SIZE typo
...
Signed-off-by: HiFiPhile <admin@hifiphile.com >
2026-07-03 16:00:29 +02:00
b2a9a5d06a
fix: correct video stack macro typo in video capture examples
...
Corrects VIDEO_STACK_SZIE to VIDEO_STACK_SIZE.
2026-07-03 15:21:40 +02:00
ef05184635
Merge pull request #3742 from Old-Ding/fix/rtthread-msc-inquiry-bounds
...
Fix RT-Thread MSC inquiry string bounds
2026-07-03 11:25:33 +02:00
3157621ee6
Merge pull request #3660 from andrewleech/cdch-on-enum-idx-guard
...
cdc_host: fix undeclared 'idx' when only LINE_CONTROL_ON_ENUM is defined
2026-07-03 11:10:50 +02:00
7a4111b96e
license: use SPDX identifiers for src/ headers ( #3749 )
...
* license: use SPDX identifiers for src/ headers
Replace the full ~20-line MIT license boilerplate on every src/ file with a
two-line SPDX tag (SPDX-FileCopyrightText + SPDX-License-Identifier), following
the REUSE convention used by CircuitPython and the Linux kernel. Removes ~3500
lines of duplicated boilerplate.
2026-07-02 21:55:45 +07:00
4202e1e2d0
hcd(max3421): improve CHIPRES reset logic and refine oscillator stabilization timing
2026-07-01 17:49:14 +07:00
f96757a19a
max3421: prevent USB host hang at startup
...
On some boards the MAX3421E doesn't report its oscillator ready after a
soft reset (CHIPRES), so hcd_init() waits on USBIRQ_OSCOK forever and the
host hangs at startup before any USB device can be used. Bound the wait so
it proceeds after a timeout; it is a no-op where OSCOK arrives normally.
Needed on the Adafruit Feather ESP32 V2 (classic ESP32) + USB Host
FeatherWing, which otherwise hangs on essentially every cold boot.
Relates to adafruit/circuitpython#10053 .
2026-07-01 16:07:59 +07:00
dae3f9a366
docs: convert changelog release notes from RST to Markdown ( #3746 )
...
* docs: convert changelog release notes from RST to Markdown
0.21.0
2026-06-30 22:27:27 +07:00
188b998929
Merge pull request #3747 from hathach/claude/claude-review-allowtools
...
ci(claude-review): allowlist the tools /code-review needs
2026-06-30 17:26:02 +07:00
37e247176c
ci(claude-review): allowlist Write too (review writes a helper script)
...
The log shows two gated tools, not one: compound Bash pipelines AND Write — the
review tried to drop check_headings.py (at /tmp, then the workdir, both denied).
Add Write to the allowlist.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 17:14:29 +07:00
2bedc60e83
ci(claude-review): trim allowlist to Bash (the only gated tool)
...
Every blocked call in the review log was a compound Bash pipeline; Read/Grep/
Glob/Task already ran un-prompted, so only bare Bash needs allowlisting.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 17:04:32 +07:00
c52a4a37f0
ci(claude-review): allowlist the tools /code-review needs
...
The auto-review job runs /code-review headless, which uses Bash (git diff, gh),
file search, and Task (it fans out sub-agent reviewers). None were allowlisted,
so every such call stalled on a per-tool approval prompt and the review couldn't
gather the diff or spawn reviewers. Add --allowedTools.
Safe here (unlike claude.yml): this job is gated to same-repo PRs and its token
is contents:read, so it cannot push. Bash is broad — scope to git/gh/grep if
preferred.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 16:45:34 +07:00
da41189467
Merge pull request #3745 from hathach/claude/release-0.21.0
...
Release 0.21.0
2026-06-30 16:11:24 +07:00
47ce85fc19
make-release skill: tighten to commands + essential judgment
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 16:07:21 +07:00