docs: record mixed native transport qualification results
This commit is contained in:
parent
3fc28b1fa4
commit
0413682709
2 changed files with 67 additions and 13 deletions
15
README.md
15
README.md
|
|
@ -363,12 +363,15 @@ states refresh at 40 ms. XInput uses held low/left-160-Hz and high/right-320-Hz
|
|||
effects until explicitly stopped. Standalone Joy-Cons downmix each band by
|
||||
dominant amplitude, choosing left on ties; logical Joy-Con pairing is not added.
|
||||
|
||||
**Qualification is incomplete.** A genuine Pro-only controlled run delivered
|
||||
all 1,025 commands without new loss or congestion. Earlier mixed Pro/DualSense
|
||||
runs exposed substantial shared-radio pressure; the latest held-state
|
||||
coalescing optimization still needs that hardware rerun. Joy-Con hardware,
|
||||
four-controller operation, captured game effects, and physical actuator timing
|
||||
are not qualified by the native regression suite. See
|
||||
**Qualification is incomplete.** The optimized Pro-only build passed 1,025
|
||||
distinct commands at 125 Hz with no loss or congestion. Separate held-state
|
||||
testing coalesced 505 of 513 commands into eight state changes plus refreshes,
|
||||
also without loss; the user confirmed both actuators, both bands and clean
|
||||
stops. Mixed held-effect traffic also passed at approximately 125 Hz per
|
||||
controller. Continuously changing both streams at that rate still loses Pro
|
||||
commands and DualSense audio slots; transport experiments remain unqualified.
|
||||
Joy-Con hardware, four-controller operation, captured game effects and physical
|
||||
actuator timing are not qualified by the native regression suite. See
|
||||
[SWITCH_FAMILY_HD_RUMBLE_PLAN.md](SWITCH_FAMILY_HD_RUMBLE_PLAN.md) for the exact
|
||||
implementation, quantization policy, evidence and remaining checks.
|
||||
|
||||
|
|
|
|||
|
|
@ -84,23 +84,74 @@ uv run switch-pico-config config native-rumble revoke --identity N
|
|||
- **Pro-only radio:** genuine Pro reply firmware bytes `03 48`; a controlled
|
||||
pre-coalescing 125-Hz run completed all **1,025 commands**, with **1,025
|
||||
submitted reports**, **zero new drops**, and **zero congestion attempts**.
|
||||
- **Optimized Pro hardware:** the reconnected Pro received 513 commands for
|
||||
separated left/right 160-Hz and 320-Hz pulses. Eight state changes completed,
|
||||
505 unchanged holds coalesced, and 56 reports were submitted including
|
||||
refreshes, with zero loss/congestion. The user confirmed all four pulses
|
||||
worked and stopped cleanly. Worst observed submission latency was 1,031 us.
|
||||
A subsequent 125-Hz run changed amplitude every command: all 1,025 commands
|
||||
completed as 1,025 reports, with zero coalescing, loss or congestion. The
|
||||
diagnostic maximum reached 1,576 us; neither figure is actuator onset.
|
||||
- **Mixed radio before coalescing:** can-send-driven Pro isolation with
|
||||
DualSense connected completed 195 of 513 commands and dropped 318; the
|
||||
idle DualSense PCM stream skipped 30 slots. Stopping its PCM stream but
|
||||
keeping its input connection completed 276/513 and dropped 237. These
|
||||
failures must not be relabeled as successful fidelity qualification.
|
||||
- **Next hardware check:** the held-state-coalescing build is flashed and
|
||||
the Pro approval persists. The Pro did not reconnect after that flash;
|
||||
press its normal Home button, leaving DualSense off initially. Repeat
|
||||
actuator/band isolation and confirm physical vibration, then rerun with
|
||||
DualSense input/PCM and distinguish repeated holds from every-command
|
||||
state changes. Reconnect, approval revocation/resume, LEDs, scaling and
|
||||
stateful XInput still need integrated hardware checks.
|
||||
- **Optimized mixed holds:** concurrent USB writers delivered 2,049 commands
|
||||
per controller at approximately 125 Hz each. Pro completed 65 state changes,
|
||||
coalesced 1,984 holds and lost none; DualSense accepted all 2,049 commands
|
||||
with no audio skips/send failures. An earlier sequential-writer test ran
|
||||
only about 62 Hz per controller and must not be cited as a 125-Hz result.
|
||||
- **Optimized mixed distinct updates:** changing amplitude every 8 ms on both
|
||||
controllers completed 404/1,025 Pro commands and superseded 621; DualSense
|
||||
accepted all host commands but skipped 46 audio slots. This remains a
|
||||
failed high-rate qualification, not evidence of lossless mixed HD rumble.
|
||||
- **Remaining checks:** resolve mixed distinct-update saturation, then qualify
|
||||
approval revocation/resume, LEDs, scaling and stateful XInput on hardware.
|
||||
Pro approval survived firmware reboot and reconnect.
|
||||
- **Unavailable evidence:** no real-console USB/BT rumble capture corpus,
|
||||
original Joy-Con L/R qualification, four-controller hardware result or
|
||||
instrumented actuator onset has been obtained. Do not infer these from
|
||||
synthetic vectors or HCI acceptance.
|
||||
|
||||
### Active transport experiments
|
||||
|
||||
Native rumble remains enabled at the user's request. A reported controller
|
||||
power-off after a test is accepted as a failure observation; its cause is not
|
||||
established. Pro approval was briefly revoked at configuration generation 12,
|
||||
then explicitly restored at 13. Do not revoke it as part of further experiments.
|
||||
|
||||
Passive HCI observations found both links in master role, with Pro in sniff
|
||||
mode at interval 24 (15 ms) and DualSense active. During saturation, the Pro
|
||||
held four or five of the eight outgoing ACL buffers. Those eight buffers are
|
||||
distinct from the three controller-to-host incoming flow-control credits.
|
||||
Remote feature responses were Pro `bff8cbfecbef7b87` and DualSense
|
||||
`bf3a8dfedbff7b87`; the local HCI packet-type mask was `0xcc18`.
|
||||
|
||||
| Experiment | Commands per controller | Pro completed / dropped | DS audio skips |
|
||||
|---|---:|---:|---:|
|
||||
| Distinct nonzero effects, normal policy | 1,025 | 404 / 621 | 46 |
|
||||
| Distinct nonzero effects, Pro no-sniff policy, receive bound 1 | 1,025 | 882 / 143 | 2 |
|
||||
| Distinct nonzero effects, Pro no-sniff policy, receive bound 2 | 1,025 | 947 / 78 | 5 |
|
||||
| Changing zero-amplitude commands, normal policy, receive bound 1 | 513 | 214 / 298 | 21 |
|
||||
| Changing zero-amplitude commands, Pro no-sniff policy, receive bound 1 | 513 | 491 / 21 | 1 |
|
||||
|
||||
The two zero-amplitude runs each coalesced one command; the other commands
|
||||
exercise the 11-byte native transport without driving actuators. They do not
|
||||
prove nonzero-effect fidelity. Exit-sniff requests alone failed to keep the
|
||||
Pro active; that unproven automatic-wake code has been removed. The no-sniff
|
||||
policy is an experimental per-link setting, not a qualified production default.
|
||||
|
||||
The current diagnostic build uses receive bound 4 and is awaiting normal
|
||||
controller reconnects after flashing. Its temporary `build-aio/link_probe.cpp`
|
||||
and `SWITCH_PICO_LINK_PROBE` hooks are **uncommitted experiment code**, not
|
||||
packaged release firmware. Operation `0x44`, diagnostic schema 2, captures link
|
||||
snapshots, selected HCI command/mode events and disconnect reasons. Separate
|
||||
OUT requests allow explicit Pro policy 1 (role-switch only), policy 5 (normal
|
||||
role-switch plus sniff), or a readback; no automatic policy change occurs.
|
||||
Keep approvals/bonds/profiles unchanged. Remove these hooks and restore or
|
||||
qualify the receive bound before publishing another production build.
|
||||
|
||||
Linux's current Nintendo driver also documents disconnect risk from excessive
|
||||
output traffic and uses input-report-aware throttling. This is corroborating
|
||||
timing evidence, not code incorporated into this project:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue