testsAndMisc/linux_configuration/tests
Krzysztof kuhy Rudnicki 3ae53499e6 g29 shifter: detect PS4 mode (046D:C260) instead of failing silently
On the 2026-09-15 and 2026-09-17 boots the wheel enumerated as 046D:C260
(PS3/PS4 selector in PS4 position, bound by hid-generic). The BPF udev
rule, the ensure unit and its hotplug rule all keyed on C24F, so the unit
failed once with "no G29 found" and nothing was said; 1st/3rd stayed on
the firmware's bad decode until the selector was flipped a day later.

- fixes/g29_wheel_mode.sh (new, sourced): classify the HID bus as
  native/ps4/compat/absent; root-safe desktop notification via
  /run/user/*/bus + sudo -u.
- --ensure: absent -> exit 0; ps4/compat -> exit 1 + critical
  notification; native -> attach. --status prints the mode first.
- g29-shifter-bpf.service: Restart=on-failure, RestartSec=5min so a
  notification lost before the session bus exists at boot is re-sent.
- 99-g29-shifter-ensure.rules: also fires on C260.
- tests/test_fix_g29_shifter.bats: 13 tests against a fake sysfs tree.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NVfC2T6DyvCFqse9A99zef
2026-09-18 10:47:18 +02:00
..
lib Re-point paths for the ~ reorganisation (home-tidy) 2026-09-11 20:50:19 +02:00
__init__.py Harden runtime script deployment and enforce installer safety 2026-05-08 17:44:22 +02:00
conftest.py Add the G29 shifter HID-BPF fix (1st/3rd engage reliably) 2026-09-14 22:12:31 +02:00
test_fast_count.py refactor: extract all inline Python from shell scripts into proper .py files 2026-06-06 10:31:48 +02:00
test_fix_g29_shifter.bats g29 shifter: detect PS4 mode (046D:C260) instead of failing silently 2026-09-18 10:47:18 +02:00
test_g29_shifter_capture_cli.py Add the G29 shifter HID-BPF fix (1st/3rd engage reliably) 2026-09-14 22:12:31 +02:00
test_g29_shifter_capture.py Add the G29 shifter HID-BPF fix (1st/3rd engage reliably) 2026-09-14 22:12:31 +02:00
test_i3blocks_efficiency.sh Flatten i3-configuration and misc/testsAndMisc-bash 2026-08-23 19:02:18 +02:00
test_i3blocks_persist_common.sh Flatten i3-configuration and misc/testsAndMisc-bash 2026-08-23 19:02:18 +02:00
test_network_diagnostics.bats Point the diagnostics bats suite at the flattened path 2026-08-23 20:08:40 +02:00
test_security_hardening.sh Extract digital-wellbeing; the directory-depth cap now enforces 2026-08-23 20:57:51 +02:00
test_session_autopsy_hooks.py Re-point paths for the ~ reorganisation (home-tidy) 2026-09-11 20:50:19 +02:00
test_setup_dns_blocker.sh Dissolve linux_configuration/scripts/ and single_use/ 2026-08-23 18:53:30 +02:00
test_transcribe_diarize_audio.py _transcribe_diarize: split 356 -> 164 + 143 + 105 2026-08-17 13:59:39 +02:00
test_transcribe_diarize_classifier.py _transcribe_diarize: cover 0% -> 100% before splitting 2026-08-17 13:54:04 +02:00
test_transcribe_diarize_cluster.py _transcribe_diarize: split 356 -> 164 + 143 + 105 2026-08-17 13:59:39 +02:00
test_transcribe_diarize_pipeline.py _transcribe_diarize: cover 0% -> 100% before splitting 2026-08-17 13:54:04 +02:00
test_transcribe_diarize_probe.py _transcribe_diarize: split 356 -> 164 + 143 + 105 2026-08-17 13:59:39 +02:00
test_transcribe_diarize_segments.py _transcribe_diarize: cover 0% -> 100% before splitting 2026-08-17 13:54:04 +02:00
test_transcribe_fw_main.py transcribe_fw: cover 0% -> 100% before splitting 2026-08-17 13:40:47 +02:00
test_transcribe_fw_pipeline.py transcribe_fw: cover 0% -> 100% before splitting 2026-08-17 13:40:47 +02:00
test_transcribe_fw_progress.py transcribe_fw: split 302 -> 236 + 91 2026-08-17 13:43:49 +02:00
test_transcribe_helpers_cli.py transcribe_helpers: cover 0% -> 100% before splitting 2026-08-17 13:29:07 +02:00
test_transcribe_model_ops.py transcribe_helpers: split 289 -> 177 + 142 2026-08-17 13:33:38 +02:00
test_transcribe_probes.py transcribe_helpers: split 289 -> 177 + 142 2026-08-17 13:33:38 +02:00
test_transcribe_wav.py transcribe_helpers: split 289 -> 177 + 142 2026-08-17 13:33:38 +02:00
test_validate_contract.py refactor: extract all inline Python from shell scripts into proper .py files 2026-06-06 10:31:48 +02:00
test_validate_evidence.py refactor: extract all inline Python from shell scripts into proper .py files 2026-06-06 10:31:48 +02:00