Repository navigation
Conversation
The installation manifest writer takes the device profile; J71b keeps its manifest, asset and index bytes. Later devices prefix their device-specific files (root, recovery) so separately built device releases can be merged into one directory and published together; the branded Pongo is shared. release.merge combines device releases, refusing any differing file name before copying, and rewrites one index that pins each device once. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The power-key toggle opened the J71b DWI backlight by a fixed path. It now accepts exactly one of the known iPad DWI panel backlights (J71b 20e200080, J71t 20e200000) and refuses none or several, so the shared helper serves both devices. J71b selection is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Root, recovery, audit and desktop-smoke code take the device profile instead of hard-coding J71b; J71b remains the default and produces the same files, names and receipts. Per-device facts (platform helpers, enabled units, panel backlight, asset prefix) live in release.devices. The shared code stays in release/j71b rather than moving: J71b is the reference port and its module paths are imported by tests and desktop tooling. Devices other than J71b reuse the J71b layer's device-independent session files through an explicit list and supply their own system overlay. The hardware runtime and recovery producer receive a profile only for non-J71b devices, so J71b still builds against hardware releases that predate multi-device support. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
iPad 5 Wi-Fi (J71t) installs the same Omarchy A desktop as J71b. Its image
policy requires j71t-check-platform and no charging lease: the J71t
charger policy runs in the kernel. The permission verifier is J71b's,
byte for byte (checked by a test).
The system layer adds only J71t facts: platform gate service and getty
dependency, panel backlight 20e200000 permissions, unmanaged USB
diagnostics interface, battery uevent rate and the tablet network rule.
Session files come from the J71b layer through release.devices. Suspend
stays disabled, as on J71b. The userspace recipe is J71b's with a J71t
package list (currently the same packages).
release.j71t.{build,audit,smoke_desktop} run the shared assembly with
the j71t profile.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
build-loader takes --device (default j71b) and passes it to the hardware m1n1 producer. The Omarchy splash only draws into m1n1's boot framebuffer, so J71t applies the J71b splash patch unchanged instead of a copy: it applies cleanly on m1n1 d5a10ac52a with the J71t loader patches. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ci/dependencies takes DEVICE (default j71b) and a --components-only mode; other devices' component bundles extract to out/DEVICE. The workflow's extra_devices input (empty by default) builds each listed device's loader and base root beside J71b's, assembles and audits its release, merges it into the J71b release and checks every device with orchard resolve before the single publish/attest step. J71b steps, jobs and artifact names are unchanged. j71t stays out of the default until a hardware release ships j71t-components.tar.gz; add it together with the hardware_tag default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add J71t to the supported-devices table and a per-feature matrix in docs/devices.md. J71t statuses come from device tests of the same drivers in the omarchy-ipad5 port on one iPad6,11; features excluded from the J71t kernel (AOP accelerometer, GPU, video decoder, Secure Enclave) say so, and the Orchard install path is marked untested on J71t. J71b entries cite only Orchard's own code and documentation; the rest are left for the maintainer to confirm. BUILD.md shows per-device assembly and the release merge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The J71t kernel builds the bq27xxx gauge driver in, so a modprobe.d option never applies. Write the same 10-second poll interval to the module parameter through tmpfiles.d instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The J71t kernel now drives the display natively (ADBE KMS, panel eDP-1) and ships the VXD H.264 decoder with its firmware from the IPSW. Display and brightness move to Works and video decode to Partial. The charging row states what was verified: computers charge at up to 2.4 A; wall and USB-C chargers do not charge correctly with this kernel, and a fix will follow as a separate change after device validation. The battery row notes that the gauge can report Full while discharging at 100 %. The AOP accelerometer stays out; the row now says why. The footnote and the J71t system README name the public omarchy-ipad5 port and the a9/orchard-j71t kernel branch as the source of the J71t statuses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With kernel patch 0013 (OrchardLinux/hardware), computers and USB-C chargers charge the iPad 5 at up to 2.4 A, the board maximum, as verified on the device on 2026-10-27. Charging is 5 V only; the iPad 5 has no USB Power Delivery. The battery row drops the note about Full while discharging, which the same update fixes, and the footnote records the charging verification date. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Update: J71t charging now Works (one new commit, nothing rewritten) The new commit changes only
The kernel change is patch 0013 in OrchardLinux/orchard#6 (commit Unit tests: 72 run; the only failures are the same 3 |
|
Thank you, Berkay. The release is device-generic now, so the per-device build isn't needed. Your screen-toggle fix and the 10 s battery poll apply to every device and are merged on |
Depends on the hardware PR (
j71t-components.tar.gz) and a CLI release withthe J71t adapter.
Summary
release/manifests.pytakes the device,and
release/merge.pypins several per-device manifests in oneindex.toml, sorted, and refuses duplicates. J71b's manifest and index textare unchanged (a test checks this).
per-device facts from
release/devices.py.j71t-rootfs.tar.zst,j71t-recovery.bin, …),so one release can carry both. The branded
pongo.binis shared.image/j71t/: image policy and permissions. Helperj71t-check-platform; no charge lease, because J71t charging policy is inthe kernel.
system/j71t/: package list (the J71b desktop userspace) and anoverlay:
20e200000.backlight;tmpfiles.d(the J71t gauge driver isbuilt in).
list (suspend stays disabled, as on J71b).
gestures and the on-screen keyboard are Hyprland-specific, and
auto-rotate needs the AOP driver, which this port does not ship yet.
boot/build-loader --devicedefaults toj71b. The splashpatch is device-independent and applies on top of the J71t m1n1 patches.
ci/dependenciesandbuild.ymlbuild additional devices listed ina new
extra_devicesinput, empty by default. J71b jobs, steps andartefacts keep their names.
eDP-1) and the H.264 decoder. No image change is needed for them: thefirmware mixin carries
vxd-deva.binlike any other recipe file, theshell's brightness control already uses
/sys/class/backlight(the displaydriver adds no backlight device), and nothing here assumes simpledrm. The
decoder's firmware starts only on request, through debugfs.
docs/devices.mdis a per-feature matrix for J71b and J71t; the J71b columnstates only what this repository's code and docs show, with sources. J71t:
out, microphones, battery, USB gadget.
device; wall and USB-C chargers do not charge correctly with this kernel,
the input stays at the 500 mA floor and the battery drains with the screen
on; a fix will follow as a separate change after device validation),
video decode, NVMe install, the Lightning camera adapter.
Testing done
python -m unittest discover -s testson Python 3.12 and3.9 with the hardware and CLI wheels from the companion PRs installed: 72
tests.
tests/test_host_bootstrap.pythat alsofail on
main(upstream HEAD mismatch).ci/dependenciesbundle test, whichneeds GNU
sha256sum --strictand passes in a Linux container.tests/test_j71t_layer.pycovers the J71t layer.patches and the hardware quiet patch.
Not tested
has not yet run on a J71t. The same kernel drivers passed 13 of 13 device
checks through the omarchy-ipad5
port's own boot path; the J71t column's footnote says so.
has run. No J71t components are published yet, and the CI extra-device path
has never executed.
orchard launchis not available for J71t until a J71t sharedlauncher exists (see the hardware PR).
How to test
python -m unittest discover -s tests.extra_devices=j71tand a hardware release containingj71t-components.tar.gz, run the workflow, or follow BUILD.md withrelease.j71t.build.orchard install omarchy-awith a local index for a J71t whoseLinux-data partition is unformatted or has room for
/omarchy.Credits
omarchy-ipad5 iPad 5 port
(kernel source:
brkosebay/linux
a9/orchard-j71t),which builds on Paul Praschl's (Pauli1Go) HoolockLinux A10 work and
HoolockLinux.
as the reference.
🤖 Generated with Claude Code