[PATCH AUTOSEL 6.18-5.10] ALSA: usb-audio: Add quirk for Novation Mininova
From: Sasha Levin
Date: Mon Aug 31 2026 - 15:13:19 EST
From: Uwe Küchler <uwe@xxxxxxxxxxxx>
[ Upstream commit b2e9d2cbbb71b00faf3e27fb741a27b9ad455edd ]
Add a device-specific quirk for the Novation Mininova synthesizer
(USB ID 1235:001e) to enable proper recognition and functionality
as a MIDI device.
Signed-off-by: Uwe Küchler <uwe@xxxxxxxxxxxx>
Link: https://patch.msgid.link/20260526162033.7513-1-uwe@xxxxxxxxxxxx
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---
LLM Generated explanations, may be completely bogus:
# Stable Backport Analysis: ALSA: usb-audio: Add quirk for Novation
Mininova
**Local tree:** `v6.18.44` (Linux 6.18.44)
---
## PHASE 1: COMMIT MESSAGE FORENSICS
### Step 1.1: Parse the Subject Line
**Record:** `[ALSA: usb-audio] [add] [quirk for Novation Mininova
synthesizer USB ID 1235:001e]`
### Step 1.2: Parse All Commit Message Tags
**Record:**
- **Signed-off-by:** Uwe Küchler `<uwe@xxxxxxxxxxxx>` (author)
- **Link:**
`https://patch.msgid.link/20260526162033.7513-1-uwe@xxxxxxxxxxxx`
- **Signed-off-by:** Takashi Iwai `<tiwai@xxxxxxx>` (ALSA maintainer,
applied the patch)
- No Fixes:, Reported-by:, Tested-by:, Reviewed-by:, Acked-by:, or Cc:
stable tags
- Notable: maintainer SOB indicates the patch was accepted and applied
### Step 1.3: Analyze the Commit Body Text
**Record:**
- **Bug description:** The Novation Mininova (USB 1235:001e) is not
properly recognized or functional as a MIDI device without a device-
specific quirk.
- **Symptom/failure mode:** MIDI functionality does not work when the
device is plugged in; the generic USB audio driver path cannot handle
this device's non-standard interface correctly.
- **Version information:** None stated.
- **Root cause (author):** Device needs `QUIRK_MIDI_RAW_BYTES` handling
on interface 0, same family as other Novation devices (Nocturn,
Launchpad).
### Step 1.4: Detect Hidden Bug Fixes
**Record:** Not a hidden bug fix disguised as cleanup. This is an
explicit hardware quirk / device-enablement entry. It fixes a real
functional defect (MIDI non-operation) for a specific USB device,
falling under the hardware-quirk exception category for stable.
---
## PHASE 2: DIFF ANALYSIS
### Step 2.1: Inventory the Changes
**Record:**
- **Files changed:** `sound/usb/quirks-table.h` (+8 lines)
- **Functions modified:** None (data table entry only)
- **Scope classification:** Single-file, surgical quirk table addition
### Step 2.2: Understand the Code Flow Change
**Record:**
- **Hunk (before):** After the Novation Twitch (0x1235:0x0018) entry,
the table jumps directly to ReMOTE25 (0x1235:0x4661). Mininova
(0x1235:0x001e) has no entry.
- **Hunk (after):** New entry inserted:
```c
{
USB_DEVICE(0x1235, 0x001e),
QUIRK_DRIVER_INFO {
QUIRK_DATA_RAW_BYTES(0)
}
},
```
- **Execution path affected:** USB device probe → `usb_audio_ids[]`
match → `usb_audio_probe()` → `snd_usb_create_quirk()` →
`create_any_midi_quirk()` → `snd_usb_midi_v2_create()` with
`QUIRK_MIDI_RAW_BYTES` ops on interface 0.
- **Path type:** Device initialization / probe path (plug-in time).
### Step 2.3: Identify the Bug Mechanism
**Record:**
- **Bug category:** Hardware workaround / device-specific quirk
- **Mechanism:** Without the quirk entry, the Mininova either fails to
match the quirks table with the correct MIDI handler, or falls through
to generic audio-class parsing that cannot handle its raw-bytes MIDI
interface. `QUIRK_DATA_RAW_BYTES(0)` expands to `.ifnum = 0, .type =
QUIRK_MIDI_RAW_BYTES`, which selects `snd_usbmidi_raw_ops` and
`snd_usbmidi_detect_per_port_endpoints()` — the same pattern used for
Novation Nocturn (0x000a) and Launchpad (0x000e).
### Step 2.4: Assess the Fix Quality
**Record:**
- **Fix quality:** Obviously correct; follows the exact established
pattern of sibling Novation entries in the same file region.
- **Minimal/surgical:** Yes, 8 lines, one table entry.
- **Regression risk:** Very low — adds a new device ID match only; does
not alter existing entries or code paths.
- **Red flags:** None.
---
## PHASE 3: GIT HISTORY INVESTIGATION
### Step 3.1: Blame the Changed Lines
**Record:** Insertion point is between Twitch (line 2133) and ReMOTE25
(line 2135) in `quirks-table.h`. Adjacent Novation Nocturn/Launchpad
`QUIRK_DATA_RAW_BYTES(0)` entries have been present in this tree's
quirks table. The Mininova device ID is absent — the "bug" is simply the
missing quirk entry for hardware that has existed since ~2012.
### Step 3.2: Follow the Fixes: Tag
**Record:** No Fixes: tag present. N/A.
### Step 3.3: Check File History for Related Changes
**Record:** This stable tree has limited per-file history (squashed
import). The Novation quirk section with Nocturn (0x000a), Launchpad
(0x000e), and Twitch (0x0018) is present. The Mininova entry is missing.
Standalone patch — not part of a series (v1→v3 were revisions of the
same single patch per lore thread).
### Step 3.4: Check the Author's Other Commits
**Record:** No commits by Uwe Küchler found in this tree. Author appears
to be an end-user/contributor, not a subsystem maintainer. Patch was
reviewed and applied by Takashi Iwai (ALSA/usb-audio maintainer).
### Step 3.5: Check for Dependent/Prerequisite Commits
**Record:** No dependencies. `QUIRK_DATA_RAW_BYTES` macro (line 68–69),
`QUIRK_MIDI_RAW_BYTES` enum, `create_any_midi_quirk()`, and
`snd_usbmidi_raw_ops` all exist in this 6.18.44 tree. Applies
standalone.
---
## PHASE 4: MAILING LIST AND EXTERNAL RESEARCH
### Step 4.1: Find the Original Patch Discussion
**Record:**
- **Lore URL:** `https://lore.kernel.org/linux-
sound/20260526162033.7513-1-uwe@xxxxxxxxxxxx`
- **Series revisions:** v1 (20260526133517), v2 (20260526155606),
v3/final (20260526162033) — v3 incorporated maintainer feedback
- **Key reviewer feedback:** Takashi Iwai suggested using
`QUIRK_DATA_RAW_BYTES(0)` instead of explicit fields, and omitting
vendor/product names (author complied in final version)
- **Maintainer response:** "Applied to for-next branch now. Thanks."
- **Stable nominations:** None in thread
- **NAKs/concerns:** None
### Step 4.2: Check Who Reviewed the Patch
**Record:** CC'd: `perex@xxxxxxxx` (Jaroslav Kysela, ALSA co-
maintainer), `tiwai@xxxxxxxx` (Takashi Iwai). Takashi Iwai reviewed and
applied. Appropriate maintainers involved.
### Step 4.3: Search for the Bug Report
**Record:** No external bug report, syzbot, or user crash report. Bug is
functional: device MIDI doesn't work without the quirk. Severity from
reporter's perspective: hardware unusable for MIDI on Linux.
### Step 4.4: Check for Related Patches and Series
**Record:** Standalone single-patch submission. No series dependencies.
### Step 4.5: Check Stable Mailing List History
**Record:** No prior stable-list discussion found for Novation Mininova.
---
## PHASE 5: CODE SEMANTIC ANALYSIS
### Step 5.1: Identify Key Functions in the Diff
**Record:** No functions modified. Affected infrastructure:
- `usb_audio_probe()` in `card.c`
- `snd_usb_create_quirk()` in `quirks.c`
- `create_any_midi_quirk()` → `snd_usb_midi_v2_create()`
- `QUIRK_MIDI_RAW_BYTES` case in `midi.c`
### Step 5.2: Trace Callers
**Record:**
- `usb_audio_probe()` — USB core hotplug probe path, called on device
plug-in
- `snd_usb_create_quirk()` — called from `usb_audio_probe()` at line
1023
- `create_any_midi_quirk()` — quirk dispatch table entry for
`QUIRK_MIDI_RAW_BYTES`
- **Impact surface:** Any user plugging in a Novation Mininova; common
desktop/music-production scenario
### Step 5.3: Trace Callees
**Record:** `create_any_midi_quirk()` → `snd_usb_midi_v2_create()` →
sets `snd_usbmidi_raw_ops`, detects per-port endpoints. No allocations
or locks beyond normal MIDI device setup.
### Step 5.4: Follow the Call Chain
**Record:** USB hotplug → `usb_audio_probe()` → quirk table match on
`USB_DEVICE(0x1235, 0x001e)` → MIDI quirk creation. Reachable by any
user plugging in the device (no special privileges needed for device
recognition).
### Step 5.5: Search for Similar Patterns
**Record:** Identical `QUIRK_DATA_RAW_BYTES(0)` pattern at lines
2026–2039 for Novation Nocturn (0x000a) and Launchpad (0x000e). Mininova
is the same vendor (0x1235), same quirk type, same interface number.
---
## PHASE 6: CROSS-REFERENCING AGAINST THE LOCAL TREE
### Step 6.1: Does the Buggy Code Exist in This Tree?
**Record:** **Yes.** The quirks table in 6.18.44 has the Novation
section with Nocturn, Launchpad, Twitch, and ReMOTE25, but **no entry
for 0x1235:0x001e (Mininova)**. All supporting quirk infrastructure is
present. The device has never been supported in this tree.
### Step 6.2: Check for Backport Complications
**Record:** **Clean apply expected.** Insertion point between Twitch
(0x0018) and ReMOTE25 (0x4661) matches the upstream diff context
exactly. No conflicting changes in this region.
### Step 6.3: Check if Related Fixes Are Already Here
**Record:** No existing Mininova quirk or alternate fix found (`grep`
for "Mininova", "0x001e", "mininova" returned no matches in
`sound/usb/`).
---
## PHASE 7: SUBSYSTEM AND MAINTAINER CONTEXT
### Step 7.1: Identify the Subsystem and Criticality
**Record:** **Subsystem:** `sound/usb` (ALSA USB audio driver).
**Criticality:** IMPORTANT — widely used driver for USB audio/MIDI
devices, but fix affects only Novation Mininova owners.
### Step 7.2: Assess Subsystem Activity
**Record:** Actively maintained; quirks table is routinely updated with
new device entries. USB audio quirk additions are a well-established
stable backport pattern.
---
## PHASE 8: IMPACT AND RISK ASSESSMENT
### Step 8.1: Determine Who Is Affected
**Record:** **Driver-specific** — users of the Novation Mininova USB
synthesizer. Requires `CONFIG_SND_USB_AUDIO` (common on desktop
distributions).
### Step 8.2: Determine the Trigger Conditions
**Record:** Plugging in a Novation Mininova (USB 1235:001e). Trigger is
deterministic on device connect. Any user with physical access to the
USB port can trigger it. Very common for musicians using this hardware.
### Step 8.3: Determine the Failure Mode Severity
**Record:**
- **Without fix:** Device not properly recognized/functional as MIDI —
hardware feature broken, no MIDI I/O
- **Severity:** MEDIUM — functional hardware failure, not a kernel
crash, data corruption, or security issue
- **With fix:** MIDI works via raw-bytes quirk handler
### Step 8.4: Calculate Risk-Benefit Ratio
**Record:**
- **Benefit:** Enables MIDI functionality for Novation Mininova users on
stable kernels; follows established quirk pattern
- **Risk:** Very low — 8-line table entry, no code logic changes, no API
changes, cannot affect other devices
- **Ratio:** Favorable — minimal risk, real user benefit for affected
hardware
---
## PHASE 9: FINAL SYNTHESIS
### Step 9.1: Compile the Evidence
**FOR backporting:**
- Hardware quirk exception category (explicitly allowed for stable)
- Identical pattern to existing Novation Nocturn/Launchpad entries
already in 6.18.44
- Fixes real user-facing defect (MIDI non-functionality)
- Small (8 lines), surgical, obviously correct
- Reviewed and applied by ALSA maintainer Takashi Iwai
- All prerequisite infrastructure exists in this tree
- Clean apply expected
- Zero regression risk to other devices
**AGAINST backporting:**
- Not a crash, security, corruption, or deadlock fix
- Severity is functional hardware enablement (MEDIUM), not CRITICAL
- No syzbot/fuzzer report or widespread user reports
- Device has never worked in this tree — this is enablement, not fixing
a regression introduced in stable
**UNRESOLVED:**
- None that affect the decision
### Step 9.2: Apply the Stable Rules Checklist
1. Obviously correct and tested? **PASS** — matches existing sibling
entries; maintainer reviewed and applied
2. Fixes a real bug affecting users? **PASS** — MIDI doesn't work
without the quirk
3. Important issue? **PASS (borderline)** — functional hardware failure
for affected device; quirk exception category applies
4. Small and contained? **PASS** — 8 lines, one file
5. No new features or APIs? **PASS** — table entry only, no new APIs
6. Can apply to local tree? **PASS** — all prerequisites present, clean
apply
### Step 9.3: Check for Exception Categories
**Record:** **Hardware quirk/workaround** — adds a USB device quirk
entry to the existing `snd-usb-audio` driver, enabling MIDI on non-
standard-interface hardware. Same exception category as Nocturn and
Launchpad quirks already in the tree.
### Step 9.4: Decision Rationale
This commit adds a standard ALSA USB-audio quirk for the Novation
Mininova, using the same `QUIRK_DATA_RAW_BYTES(0)` pattern as other
Novation devices already supported in 6.18.44. While not a crash or
security fix, hardware quirks for USB audio/MIDI devices are a well-
established stable backport category with very low risk and clear user
benefit. The patch is maintainer-reviewed, self-contained, and applies
cleanly to this tree where the supporting infrastructure already exists
but the device entry is missing.
---
## Verification
- [Phase 1] Parsed subject, tags; found Link and maintainer SOB; no
Fixes/Reported-by
- [Phase 1] Commit body describes MIDI recognition/functionality failure
for USB 1235:001e
- [Phase 2] Diff: +8 lines in `sound/usb/quirks-table.h`, one quirk
table entry
- [Phase 2] `QUIRK_DATA_RAW_BYTES(0)` expands to `.ifnum = 0, .type =
QUIRK_MIDI_RAW_BYTES` (verified lines 68–69)
- [Phase 2] `QUIRK_MIDI_RAW_BYTES` handled in `quirks.c:528` and
`midi.c:2565-2578`
- [Phase 3] `git describe HEAD`: v6.18.44; `make kernelversion`: 6.18.44
- [Phase 3] `grep Mininova/0x001e` in `sound/usb/`: no matches — entry
absent from tree
- [Phase 3] Adjacent Novation entries (Nocturn 0x000a, Launchpad 0x000e)
present at lines 2026–2039
- [Phase 4] Lore thread fetched via curl from `lore.kernel.org/linux-
sound/20260526162033.7513-1-uwe@xxxxxxxxxxxx/t.mbox.gz`
- [Phase 4] Takashi Iwai review feedback and "Applied to for-next branch
now. Thanks." confirmed
- [Phase 4] Three patch revisions (v1/v2/v3); final version matches
committed diff
- [Phase 4] No stable@ nomination in thread; no NAKs
- [Phase 5] `usb_audio_probe()` at `card.c:917`; quirk dispatch at
`quirks.c:509-528`
- [Phase 5] `create_any_midi_quirk()` calls `snd_usb_midi_v2_create()`
at `quirks.c:79-84`
- [Phase 6] Buggy state confirmed: Mininova ID missing from quirks table
in 6.18.44
- [Phase 6] Insertion context matches upstream diff (between 0x0018 and
0x4661 entries)
- [Phase 8] Failure mode: MIDI non-functional (MEDIUM severity); no
crash/corruption
**YES**
sound/usb/quirks-table.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index eafc0d73cca1f..cf6a2bb5264d4 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -2131,6 +2131,14 @@ YAMAHA_DEVICE(0x7010, "UB99"),
}
}
},
+{
+ USB_DEVICE(0x1235, 0x001e),
+ QUIRK_DRIVER_INFO {
+ /* .vendor_name = "Novation", */
+ /* .product_name = "Mininova", */
+ QUIRK_DATA_RAW_BYTES(0)
+ }
+},
{
USB_DEVICE_VENDOR_SPEC(0x1235, 0x4661),
QUIRK_DRIVER_INFO {
--
2.53.0