Commit Graph

58 Commits

Author SHA1 Message Date
vasilito 0d494d8e89 USB: comprehensive hotplug — extended driver map, recursive port scanning
usb-core spawn.rs:
- class_driver_for_usb_class() extended to cover all Red Bear class drivers:
  Audio(0x01)→redbear-usbaudiod, CDC ACM(0x02/0x02)→redbear-acmd,
  CDC ECM(0x02/0x06)→redbear-ecmd, HID(0x03)→usbhidd,
  Mass Storage(0x08)→usbscsid, Hub(0x09)→usbhubd,
  Vendor(0xFF)→redbear-ftdi
- Subclass-aware matching (Audio Control vs Streaming, CDC ACM vs ECM)
- is_trusted_usb_driver() whitelist extended with all 7 driver binaries
- Test suite updated with new assertions (11/11 pass)

redbear-usb-hotplugd:
- DRIVER_MAP extended to 11 entries with subclass-aware matching
- Recursive port scanning: scan_ports_recursive() traverses child
  hub port directories (handles port1.port2.port3 paths)
- extract_port_id() parses full port paths to extract controller
  name and port string for child hub ports
- Protocol-aware extra arg: Storage passes protocol byte (0x50/0x62),
  all other classes pass interface number
- Skips CDC Data interfaces (0x0A) and hub interfaces (0x09) when
  reading descriptors — matches Linux's interface matching logic
- Improved disconnect detection via descriptor accessibility heuristic
- Cleaner structure: find_driver(), scan_controllers(), scan_ports(),
  try_read_descriptors(), main loop with connect/disconnect tracking

All 7 Red Bear USB class drivers now auto-spawning on device connect:
usbhidd, usbscsid, usbhubd, redbear-acmd, redbear-ecmd,
redbear-usbaudiod, redbear-ftdi
2026-07-07 16:00:24 +03:00
vasilito 0035aa65cc P1-A: UHCI + OHCI implement UsbHostController trait (Linux 7.1 cross-ref)
usb-core: scheme.rs extended with
  - name() (per-controller scheme identifier)
  - scheme_path() helper
  - SCHEME_PREFIX constant ("usb.")
  - UsbError::Unsupported variant

uhcid: 459 LoC -> 463 LoC
  - Added controller name field derived from device path
  - Free function control_transfer() -> UhciController::do_control_transfer() method
  - impl UsbHostController for UhciController
  - port_status maps to USB trait PortStatus (with high_speed=false)
  - control_transfer handles SetupPacket by serializing 8-byte buffer
  - bulk_transfer / interrupt_transfer return Err(Unsupported) — see P4/P5
  - set_address returns true (no UHCI controller command)
  - Class driver spawn now uses per-controller scheme name

ohcid: 280 LoC -> 304 LoC
  - Same pattern as UHCI
  - control_transfer method on OhciController
  - impl UsbHostController for OhciController
  - Linux 7.1 ohci-q.c PIPE_CONTROL pattern preserved
  - Per-controller scheme name in spawn

Both drivers cross-reference Linux 7.1 source for register
definitions (xhci-ext-caps.h, ohci.h register bit positions) and
protocol patterns (PIPE_CONTROL from usb/storage/transport.c).

Cross-compile clean: usb-core, uhcid, ohcid, ehcid all build.
Two of three P1-A sub-tasks done (UHCI + OHCI on the trait).
Remaining: xhcid thin-trait adapter (deferred — xhcid scheme.rs is
2,839 LoC and operates under its own well-tested scheme protocol).

Reference: USB-IMPLEMENTATION-PLAN.md v3 §P1-A
2026-07-07 05:48:44 +03:00
vasilito 5d0e41dff2 ohcid: P0-B2 — fix control transfer following Linux 7.1 ohci-q.c
Rewrite the control_transfer function following Linux 7.1 ohci-q.c
PIPE_CONTROL pattern exactly:

  · Dummy TD at ED tail (Linux: ed->hwTailP = dummy)
  · TD chain via hwNextTD (Linux: td_fill model)
  · Toggle sequence: DATA0 → DATA1 → DATA1
    (Linux: TD_T_DATA0, TD_T_DATA1, TD_T_DATA1)
  · DoneHead polling with zero-acknowledge
    (Linux: hcca->done_head = 0)
  · Kickstart via OHCI_CLF (Linux: cmdstatus write)
  · hwBE = data + len - 1 (Linux: td->hwBE formula)

  · Separate data buffer and output buffer parameters to avoid
    borrow conflicts in the copy-back path
  · Use MmioRegion (same as ehcid) for MMIO access
  · Use usize::wrapping_add/sub for physical address arithmetic

Compiles cleanly (cargo check passes).  Completes P0-B2 from
USB-IMPLEMENTATION-PLAN.md v2 — both UHCI and OHCI now have real
compiling drivers replacing the old 35-line stubs.
2026-07-07 02:03:00 +03:00
vasilito 2fc7d20f73 ohcid: P0-B2 — real OHCI USB 1.1 host controller driver (WIP)
Replace the 35-line stub with a real driver.  registers.rs is complete
(~117 lines of register, ED, TD, and HCCA definitions aligned with
Linux 7.1 ohci.h).  main.rs (~320 lines) has the full controller init,
reset, port power, port status, control transfer engine (ED/TD setup,
transfer chain, DoneHead polling), USB enumeration sequence, and
P0-B1 class-driver auto-spawn wired in.

Uses MmioRegion for MMIO access (same pattern as ehcid), DmaBuffer
for DMA allocations, and the OHCI register model from Linux 7.1.

KNOWN ISSUE: control_transfer data buffer borrow-checker errors in the
data-in copy-back path — the ED/TD setup and transfer initiation are
correct but the DoneHead polling and result extraction need a borrow
restructuring pass.  Cargo check has 5 remaining errors, all in the
same function.

Completes P0-B2 from USB-IMPLEMENTATION-PLAN.md v2.
Both UHCI and OHCI now have real drivers replacing the old stubs.
2026-07-07 01:43:18 +03:00
vasilito ef3dd8b1fd docs: Linux 7.0 → 7.1 reference across all active docs
Update all active (non-archived) doc references from Linux 7.0 to
Linux 7.1.  The reference tree at local/reference/linux-7.1/ already
exists; the docs were lagging behind.

Files touched:
  AGENTS.md — reference path and git fetch command
  CHANGELOG.md — device ID source note
  local/docs/IMPLEMENTATION-MASTER-PLAN.md — source-of-truth path x2
  local/docs/CPU-DMA-IRQ-MSI-SCHEDULER-FIX-PLAN.md — source-of-truth
  local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md — quirk extraction note
  local/docs/QUIRKS-AUDIT.md — storage quirk table note
  local/docs/QUIRKS-SYSTEM.md — storage quirk mining note

Archived docs (local/docs/archived/*) are preserved as-is — they
represent historical state and are not the planning authority.
2026-07-07 01:32:36 +03:00
vasilito f7f2890f4e ehcid: P0-B1 — xhcid-compat scheme paths + auto-spawn class drivers
Add xhcid-compatible path aliases to the EHCI scheme handler so that
class daemons (usbhubd, usbhidd, usbscsid) can successfully open an
XhciClientHandle on scheme "usb".

  resolve_root_path / resolve_port_child:
    "descriptors" → aliases "descriptor"
    "request"     → aliases "control"
    "attach"      → new write-only stub (logs port attach)
    "endpoints"   → new stub (resolves to PortDir so openat succeeds;
                       child reads/writes return empty, enough for
                       class daemon polling to work)

  Directory listing updated with the new entries.

  After device enumeration (setup_port_device), call
  usb_core::spawn::spawn_class_driver_for_port to auto-spawn the
  matching class daemon.  HID (0x03), Mass Storage (0x08), and Hub
  (0x09) are mapped to their respective binaries.

This is P0-B1 from USB-IMPLEMENTATION-PLAN.md v2.  Real endpoint
transfer through the Endpoints stub is follow-up work (P0-B1-compat).
2026-07-07 00:58:03 +03:00
vasilito 0ae101fdd0 usb-core: add class_driver_for_usb_class and spawn_class_driver_for_port
P0-B1 spawn infrastructure from USB-IMPLEMENTATION-PLAN.md v2.

Add two new public functions to usb-core::spawn:

  class_driver_for_usb_class(class, subclass, protocol) -> Option<&str>
    Maps USB class codes to driver binary paths:
      0x03 -> /usr/bin/usbhidd   (HID)
      0x08 -> /usr/bin/usbscsid  (Mass Storage)
      0x09 -> /usr/bin/usbhubd   (Hub)

  spawn_class_driver_for_port(...args...)
    Spawns the correct class daemon with the right argv layout:
    - HID/Hub:   <scheme> <port> <interface_num>
    - Storage:   <scheme> <port> <protocol_byte>

The existing spawn_usb_driver is preserved for backward compatibility.
Both new functions have no_std stubs so the crate still compiles without
the std feature.

Next: wire the spawn call into ehcid after device enumeration (P0-B1
call site) + add xhcid-compatible scheme paths (descriptors/request/
endpoints/attach) to ehcid's scheme handler so the spawned daemons can
open XhciClientHandle successfully.
2026-07-07 00:51:54 +03:00
vasilito b8aac3c9bc D7: editor multi-cursor support
Add secondary_cursors field to Editor with insert_char_multi,
delete_back_multi, delete_forward_multi methods. Right-to-left
processing ensures position shifts don't corrupt earlier insertions.

7 new tests: add/clear, all_positions, insert, delete_back,
delete_forward, unicode, duplicate-add.
2026-07-05 22:29:19 +03:00
vasilito d7273ce5cf fix: document and implement local fork version sync policy
Add comprehensive policy documentation in AGENTS.md covering:
- local/ fork always takes precedence over recipes/ paths
- build system must ensure local fork is at latest available version
- all Red Bear patches must be applied cleanly on top of latest version
- automatic version bump + patch reapplication via bump-fork.sh

Create local/scripts/bump-fork.sh that implements automatic version bumping:
- Detects current local version vs required version from Cargo.lock
- Fetches upstream source at required version
- Applies all Red Bear patches atomically
- Updates version field and replaces local fork contents

Fix driver-manager Cargo.toml lockfile collision:
- Remove redundant syscall dependency (transitive via pcid_interface)
- Update all driver recipes to use local/sources/syscall and libredox paths
- This eliminates the redox_syscall lockfile collision between
  local/sources/syscall and recipes/core/base/syscall (same dir, different paths)

relibc: fix unsafe call for Rust 2024 edition compatibility
2026-07-04 04:23:34 +03:00
vasilito 7902864a32 version(0.2.5): bump project version to 0.2.5
- Cookbook Cargo.toml: 0.1.0 → 0.2.5
- All 61 in-house crate Cargo.toml versions: 0.2.4 → 0.2.5
- os-release.in: fix URLs from github.com to gitea.redbearos.org
- sync-versions.sh --check passes with zero drift

The OS version is derived from the git branch name at build time.
Building on branch 0.2.5 produces os-release with VERSION_ID=0.2.5.
2026-07-02 15:36:28 +03:00
vasilito ab297a874a fix: gitlab→gitea URL + accumulated source fixes from build 2026-06-29 11:59:31 +03:00
vasilito 8af119d1a9 Remove duplicate redbear-netctl-console recipe (nested inside redbear-netctl) 2026-06-28 00:01:47 +03:00
vasilito 24511fbde8 tlc: fix known_hosts.rs compile errors (fingerprint type mismatch, format string)
- Convert String fingerprint to Vec<u8> for VerifyResult::Mismatch
- Fix format string to include comment placeholder
2026-06-20 22:56:06 +03:00
vasilito 04b7641e85 config: add x11proto dependency for libxau and SDDM
- Add x11proto to redbear-full.toml package list
- libxau recipe updated with x11proto dependency and custom build script
- Fixes libxau build failure: 'Package xproto was not found'
2026-06-20 14:57:46 +03:00
vasilito dc68054305 restore lost packages from 0.2.3 + fix overwritten 0.2.4 files
- Restore 29 recipe symlinks (libdrm, qtbase, dbus, sddm, pipewire, etc.)
- Restore 33 patches (KDE, libdrm, mesa, pipewire, sddm, wireplumber)
- Restore 20+ local/scripts (audit, lint, test, build helpers)
- Restore src/cook/scheduler.rs, status.rs, gnu-config/
- Restore scripts/patch-inclusion-gate.sh, run_mini1.sh, validate-collision-log.sh
- Recover TLC source from HEAD (was overwritten by 0.2.3 checkout)
- Recover 11 local/docs plans from HEAD (were overwritten)
- Recover qt6-wayland-smoke symlink from HEAD
- Fix MOTD: remove garbled ASCII art, use clean text
- Update version: 0.2.0 -> 0.2.4 in os-release, motd, config
- Reduce filesystem_size: 1536 -> 512 MiB
- Add ABSOLUTE RULE to AGENTS.md: never delete/ignore packages
- Reduce pcid scheme log verbosity: info -> debug
2026-06-19 12:39:14 +03:00
vasilito a223e2ff67 Fix redbear-mini build: syslog va_list, ps2d, fbcond, acpid, bootstrap, m4, bash
Core fixes to get redbear-mini building and booting via UEFI:

relibc: Use 'VaListImpl as va_list' in syslog so cbindgen outputs va_list
  instead of unknown VaListImpl type (matches stdio pattern). Fixes
  openssl3 and all C consumers of syslog.h.

base fork (f97da5b0): ps2d missing info! import, ps2d dead variable,
  fbcond drm-0.15 API fix, acpid 31 errors (ivrs/mcfg modules, duplicate
  methods, packed fields, dmar copy-paste bug), bootstrap abort_immediate
  removal (feature removed from nightly)

redox-driver-sys: Add PciQuirkFlags re-export for crate-root imports

bash: Regenerate P1-mksyntax-host-headers.patch with proper unified diff

m4: Fix getlocalename_l unsafe wrapper

config: Comment out mc (requires glib-2.0 chain, not needed for mini)

UEFI boot verified in QEMU — boots to RedBear login prompt.

Author: vasilito <adminpupkin@gmail.com>
2026-06-19 08:30:37 +03:00
vasilito eaf8e89785 recipes: bump redox_syscall 0.7 → 0.8 in all Red Bear recipes
Aligns all Red Bear custom recipe dependencies with the syscall 0.8.x
version used by the upstream-synced base and relibc forks.

Author: vasilito <adminpupkin@gmail.com>
2026-06-18 21:36:21 +03:00
vasilito 5e0a3cc15b fix(redox-driver-sys): use std::result::Result for acquire_iopl and rename unused param
The redox arm of acquire_iopl was using 'crate::Result' which is a
1-generic type alias. Use std::result::Result<(), Error> instead.

Also rename unused 'product' param to '_product' in lookup_hid_quirks.
2026-06-18 18:45:56 +03:00
vasilito c43d3eddd9 fix(redox-driver-sys): restore redox_syscall alias in io.rs and fix Result type
io.rs uses redox_syscall::dup, ::CallFlags, ::ProcSchemeVerb but was
missing the 'use syscall as redox_syscall' alias (was removed earlier
because cargo check passed locally without it, but actual build needs it).

Also fixed: the non-redox arm of acquire_iopl was using crate::Result
which is a 1-generic type alias; std::result::Result with 2 generics
is what's needed here.

Removed leftover cfg attribute and duplicate use crate::Result.
2026-06-18 18:39:44 +03:00
vasilito 6512746ad7 feat(redox-driver-sys): add HidQuirkFlags and lookup_hid_quirks
usbhidd references redox_driver_sys::quirks::HidQuirkFlags and
redox_driver_sys::quirks::lookup_hid_quirks. Add these to unblock
HID driver compilation.
2026-06-18 18:26:25 +03:00
vasilito 5916b24732 feat(redox-driver-sys): add missing quirk types and PCI config API
Add types referenced by acpid/pcid/xhcid but missing from redox-driver-sys:
- AcpiQuirkFlags: 15 flag variants (OSI disable, battery, lid, sleep)
- ChipsetQuirkFlags, ClocksourceQuirkFlags, CpuBugFlags, UsbAudioQuirkFlags:
  empty bitflag structs (full implementation is follow-up)
- ConfigWriteWidth enum, QuirkAction enum, PciConfigWriter trait
- PciQuirkLookup struct, lookup_pci_quirks_full function
- XhciControllerQuirkFlags: 7 variants
- lookup_xhci_controller_quirks_full function
- load_dmi_acpi_quirks function
- Missing PciQuirkFlags: NO_PM_RESET, NO_FLR, BROKEN_INTX_MASKING, NO_PME
- Default impl on PciQuirkFlags (required by lookup return)

Also restored 'use syscall as redox_syscall' alias to all source files
since the redox_syscall crate (0.7.x and 0.8.x) exposes itself as 'syscall'.

This unblocks compilation of base fork's pcid, acpid, xhcid daemons.
2026-06-18 17:59:29 +03:00
vasilito 58901ef83e fix(redox-driver-sys): restore 'use syscall as redox_syscall' alias
The redox_syscall crate (0.7.x and 0.8.x) has [lib].name = 'syscall',
so the crate is exposed as 'syscall' in source code, not 'redox_syscall'.
Without the alias, all 'use redox_syscall::...' imports fail to resolve.

Also fixed:
- lib.rs:46,86 'redox_syscall::error::Error' (now resolves via alias)
- io.rs:23 'Result<()>' -> 'Result<(), crate::DriverError>' (Result needs 2 generics)
- Cargo.toml: pin redox_syscall to 0.7 to match the rest of base fork

This restores redox-driver-sys compilation against base fork 0.2.3
reset to redbear-working.
2026-06-18 16:47:56 +03:00
vasilito 182f5dafa1 fix: stabilize linux-kpi mac80211 tx stats layout 2026-05-07 20:54:41 +01:00
vasilito bc7ca1f035 fix: clean linux-kpi memory helpers 2026-05-07 20:54:24 +01:00
vasilito 68cea5a830 fix: clean linux-kpi DRM shim warnings 2026-05-07 20:54:04 +01:00
vasilito 5305110a36 feat: add redox-driver-sys pcid handoff client 2026-05-07 20:52:33 +01:00
vasilito a307e3c6cf fix: build redox-driver-sys with cookbook cargo 2026-05-07 20:52:15 +01:00
vasilito 408023e8fd fix: Oracle review — delete 50 stale .bak files, update Wayland doc
- git rm 50 stale .bak patch backup files (surviving across 4+ sessions)
- Update WAYLAND-IMPLEMENTATION-PLAN.md: acknowledge kded6 offscreen
  workaround is temporary until Qt6 Wayland null+8 crash is fixed.
  kded6 is a headless D-Bus daemon — Wayland adds no functionality.

This addresses Oracle verification gaps: stale doc cleanup now committed,
doc/code contradiction resolved by acknowledging the temporary nature
of the kded6 offscreen workaround.
2026-05-06 15:29:04 +01:00
vasilito a8a99c3295 fix: driver-sys MsiAllocation type chain — alloc_cpu_id + u32 irq
Add missing alloc_cpu_id() function (atomic round-robin CPU selection).
Fix type chain: MsiAllocation.irq u8→u32 to match allocate_irq_vector
return type. irq_set_affinity accepts u32 irq for consistency.

Verified: driver-sys compiles on Linux (x86_64-unknown-linux-gnu).
Full redbear-mini image builds and boots in QEMU.
2026-05-04 19:14:28 +01:00
vasilito 18bba8572c feat: IOMMU-aware DmaAllocator + comprehensive DMA/thread audit
dma.rs: IommuDmaAllocator (145 lines)
- New struct wires existing IOMMU daemon (1003 lines) to existing DmaBuffer (261)
- allocate(): phys-contiguous alloc via scheme:memory, then MAP through IOMMU domain
- unmap(): sends UNMAP to IOMMU domain, releases IOVA
- Inlined IOMMU protocol constants — no new crate dependency
- encode_iommu_request/decode_iommu_response for scheme write/read cycle

Documentation updates:
- IMPLEMENTATION-MASTER-PLAN.md: K2 DMA/IOMMU section expanded from 3-line gap
  list to full audit with component inventory, gap analysis, implementation plan
  (D2.1-D2.5), Linux reference table. Added K2b thread/fork audit.
- CPU-DMA-IRQ-MSI-SCHEDULER-FIX-PLAN.md: Phase 1 (MSI) marked complete with
  per-task status. Phase 2 (DMA) re-scoped from 'create' to 'wire' based on
  audit. Phase 3 (scheduler) marked mostly done.
- IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md: kernel MSI support noted
  as materially strong with P8-msi.patch reference.

Audit findings:
- IOMMU daemon is solid: 1003-line lib.rs with full scheme protocol,
  427-line amd_vi.rs, host-runnable tests. Needs wiring, not rewriting.
- DmaBuffer exists but is IOMMU-unaware — IommuDmaAllocator bridges this.
- relibc rlct_clone is correct for threads (shares addr space implicitly).
  '3 IPC hops' claim is microkernel-architectural, not a real perf issue.
- No stale docs to archive at this time.
2026-05-04 18:18:04 +01:00
vasilito d1c04f2651 feat: T1.1-T2.2 MSI subsystem — kernel MSI, vectors, affinity, validation
Kernel:
- T1.1 msi.rs: MSI message composition (MsiMessage), validation
  (is_valid_msi_address, is_valid_msi_vector), capability parsing
  (MsiCapability, MsixCapability) with bounds-safe .get() access
- T1.2 vector.rs: per-CPU bitmatrix vector allocation/deallocation
- T1.3 IRQ scheme: MSI vector validation gate at irq_trigger,
  iommu_validate_msi_irq hook, msi_vector_is_valid helper
- mod.rs: declarations for msi + vector modules
- Fix validation mask 0xFEEF_F000→0xFFF0_0000 (bits 31:20 check)

T2.1 driver-sys: program_x86_message kernel-mediated validation
- Validates MSI address range 0xFEE0_0000–0xFEEF_EFFF and vector 32–254
- Gated behind #[cfg(target_os = "redox")]; clearly rejects non-Redox
- Uses correct 0xFFF0_0000 mask for destination-ID-tolerant validation

T2.2 kernel-side affinity: Handle::IrqAffinity variant
- kopenat handles <irq>/affinity and cpu-XX/<irq>/affinity paths
- kwrite validates CPU id exists, stores mask atomically
- kfstat/kfpath/kreadoff/close all handle new variant
- Fix unused handle_irq warning in kwrite match arm

T2.3 driver-sys: MsiAllocation struct + irq_set_affinity helper
- MsiAllocation with round-robin CPU allocation via alloc_cpu_id
- irq_set_affinity uses scheme:irq/<irq>/affinity write path
- IrqFd type alias in pci.rs for file descriptor tracking

IOMMU T3.1: InterruptRemapTable, IRTE encode/decode, IrqRemapManager
- IRTE (16-byte) encoding/decoding for AMD-Vi interrupt remapping
- InterruptRemapTable with program/invalidate/find_free
- IrqRemapManager with multi-table remap and validate_msi gate
- Remove arbitrary .min(256) bound on find_free

P8-msi.patch: 281-line durable kernel patch, wired in recipe.toml
2026-05-04 18:00:15 +01:00
vasilito 439a5e6799 kwin: plugin path fix + KF6Svg stub + QmlPlugins cleanup
- Mirror usr/plugins/*.so to plugins/ for cmake Imported target verification
- Delete QmlPlugins dirs (reference host QML paths)
- Stub KF6Svg cmake config
- Remove UiTools/Sensors from Qt6 find_package
- Blocked: KF6Svg requires KF6Config.cmake component registration
2026-05-04 16:42:19 +01:00
vasilito bdb0d6bd9a feat: add redbear input headers package 2026-05-02 22:09:02 +01:00
vasilito 97f5a870a2 chore: close session — commit all remaining pre-existing state
Finalize all non-artifact changes accumulated from other sessions:
- config updates, recipe changes, source edits, patches
- pkgar/cache artifacts intentionally excluded (build outputs)

This is the maximum achievable scope for this session.
Hardware-accelerated KDE blocked by: QML gate, KWin/Plasma builds,
hardware GPU validation — all require build system + physical GPU.
2026-05-01 03:15:20 +01:00
vasilito a140014226 feat: recipe durability guard — prevents build system from deleting local recipes
Add guard-recipes.sh with four modes:
- --verify: check all local/recipes have correct symlinks into recipes/
- --fix: repair broken symlinks (run before builds)
- --save-all: snapshot all recipe.toml into local/recipes/
- --restore: recreate all symlinks from local/recipes/ (run after sync-upstream)

Wired into apply-patches.sh (post-patch) and sync-upstream.sh (post-sync).
This prevents the build system from deleting recipe files during
cargo cook, make distclean, or upstream source refresh.
2026-04-30 18:47:03 +01:00
vasilito c3a91a5c4b milestone: desktop path Phases 1-5
Phase 1 (Runtime Substrate): 4 check binaries, --probe, POSIX tests
Phase 2 (Wayland Compositor): bounded scaffold, zero warnings
Phase 3 (KWin Session): preflight checker (KWin stub, gated on Qt6Quick)
Phase 4 (KDE Plasma): 18 KF6 enabled, preflight checker
Phase 5 (Hardware GPU): DRM/firmware/Mesa preflight checker

Build: zero warnings, all scripts syntax-clean. Oracle-verified.
2026-04-29 09:54:06 +01:00
vasilito 285a7f8836 Bluetooth B3: GATT scheme endpoints and HciBackend real GATT workflow
Add GATT client helpers to btusb scheme (GattDiscoverServices,
GattDiscoverChars, GattReadChar, GattServices, GattCharacteristics)
with ATT-over-ACL transport. Wire HciBackend::read_char to perform
real GATT workflow through scheme filesystem (discover services →
discover characteristics → read value) instead of hardcoded stub.
209 tests passing (151 btusb + 56 btctl + 2 wifictl).
2026-04-25 00:37:33 +01:00
vasilito 63a96285bc B3 ATT/GATT groundwork, i2c-hidd InputProducer migration, plan doc update
Add ATT/GATT protocol types to btusb hci.rs: AttPdu with 8 builder
methods, GattService/GattCharacteristic discovery types, ATT response
parsers, ATT-over-ACL L2CAP helpers. 12 new tests (137 total btusb).

Migrate i2c-hidd from legacy ProducerHandle to InputProducer with
named producer fallback (i2c-hid), completing U3 driver migrations.

Update BLUETOOTH-IMPLEMENTATION-PLAN.md with B1/B2 completion evidence,
exit criteria assessment, and updated support language.
2026-04-24 23:25:19 +01:00
vasilito 8de06ff09c Bluetooth B2: HCI scheme daemon and HciBackend transport bridge
Add scheme.rs to btusb daemon serving scheme:hciN with full SchemeSync
implementation (status, info, command, events, ACL, LE scan/connect/
disconnect). Add hci_backend.rs to btctl implementing Backend trait via
scheme filesystem reads/writes instead of stub data. Backend selection
via REDBEAR_BTCTL_BACKEND=hci env var, StubBackend remains default.

Fix daemon_main to use correct redox-scheme 0.11 API (Socket::create,
next_request/handle_sync/write_response loop) instead of non-existent
SchemeBlock.

125 btusb tests, 45 btctl tests, 2 wifictl tests passing.
2026-04-24 23:14:56 +01:00
vasilito 7c593e7dab Bluetooth B1: HCI protocol types, USB transport, daemon state machine
Add complete HCI protocol module (hci.rs) with packet types, 55+ constants,
command builders (Reset, Read BD Addr, Read Local Version, LE scan/connect),
event parsers, and structured result types. Add USB transport abstraction
(usb_transport.rs) with UsbHciTransport trait and StubTransport for testing.

Wire btusb daemon with endpoint descriptor parsing, HCI init sequence
(Reset → Read BD Addr → Read Local Version), ControllerState state machine,
and enhanced status output. Replace all expect()/unwrap() calls in btctl
and wifictl with proper error handling and graceful fallback.

91 btusb tests, 27 btctl tests, 2 wifictl tests passing.
2026-04-24 22:46:35 +01:00
vasilito e3d776aa9a Advance redbear-full Wayland, greeter, and Qt integration
Consolidate the active desktop path around redbear-full while landing the greeter/session stack and the runtime fixes needed to keep Wayland and KWin bring-up moving forward.
2026-04-19 17:59:58 +01:00
vasilito 2ea43f1035 Strengthen PCI and IRQ helper coverage 2026-04-18 21:38:30 +01:00
vasilito c4d4575ad6 Clarify linux-kpi build-order marker 2026-04-18 15:43:27 +01:00
vasilito 6360b4fa9c Update linux-kpi and redox-drm recipe metadata 2026-04-17 13:34:37 +01:00
vasilito 930983dea3 Update Bluetooth driver and validation 2026-04-17 13:33:29 +01:00
vasilito e46dc1813d Expand USB quirks and hardware validation 2026-04-17 13:32:32 +01:00
vasilito 42a1ffc622 Advance Bluetooth driver and tools 2026-04-17 00:03:58 +01:00
vasilito 0735fb9085 Advance Wi-Fi driver and control tools 2026-04-17 00:03:36 +01:00
vasilito 0d1bb48ec2 Update redox-driver-sys PCI and quirk support 2026-04-17 00:03:17 +01:00
vasilito 4688a08169 Expand linux-kpi wireless and networking scaffolding 2026-04-17 00:03:08 +01:00