Repository navigation
Conversation
The public runtime, recovery, launcher, component packaging and quiet boot producers named J71b directly. Take the profile as a parameter that defaults to j71b, so a second device can reuse them unchanged. The device API in runtime/j71b stays shared. It now derives its profile from its install directory (/usr/libexec/orchard-PROFILE) and keeps the J71b storage fence and touch-role firmware staging in per-profile tables. J71b images keep the same file set, paths and modes; only the three edited runtime sources and the derived hash list change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
J71t is iPad6,11 with the TSMC S8003 (DFU chip 0x8003, board 0x10); the Samsung S8000 variant J71s shares the product type and is not matched. The firmware recipe takes the BCM4355 C0 "feara" Wi-Fi files, the Bluetooth patchram, SmartIO and the N1 touch image from the public iPadOS 16.7.10 IPSW (iPadOS 17 dropped this iPad). Wi-Fi files use the brcmfmac Apple board fallbacks, so every NVRAM variant is installed and the chip OTP selects one. Touch, ambient-light and charger calibration and the Bluetooth address come from the device's own ADT. The Wi-Fi MAC and calibration reach the kernel through m1n1. Recovery reuses the J71b device API and tools; J71t adds init, the USB gadget identity, boot arguments, hardware preparation and a platform check. The J71t kernel keeps NVMe read-only except for a boot-time write window. Recovery opens namespace 1 and uses the same block-layer fence as J71b, with namespaces 2-7 kept read-only by the kernel. Hardware preparation releases the held PCIe host and ANS after the firmware mixin arrives, then loads the touch, Bluetooth and charger modules that read private firmware at probe time. There is no J71t shared launcher yet, so the descriptor has no launch manifest and `orchard launch` reports that none is published. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two kboot changes shared with the A10 port: publish the iBoot NVMe host memory buffer (/arm-io/nvme-mmu0 sart-region) into the "nvme-hmb" node, leaving it empty instead of refusing the handoff when it is missing, and copy the Wi-Fi calibration from the wlan node under /arm-io/uart2, where A9 and A10 keep it, without requiring wifi-antenna-sku-info. Both apply to the pinned m1n1 revision together with boot/quiet/m1n1.patch and Omarchy A's splash patch. Based on Paul Praschl's T8010 work. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The ten per-feature patches apply to the pinned hoolock revision: S8003 PCIe and ANS NVMe with the boot-time write window, BCM4355 Wi-Fi and Bluetooth, SmartIO/SIO DMA/SPI, N1 touch, CS42L81 and MCA audio, D2365 power (GPIO, charger, Lightning role, battery gauge, thermal), USB gadget and camera-adapter host role, CT819 light sensor and backlight, and the S8003/J71t device trees. They are taken from the integration kernel of the omarchy-ipad5 port (https://github.com/brkosebay/omarchy-ipad5), leaving out GPU and video-decoder research code, SEP, AOP and diagnostics-only drivers. The configuration was resolved with this repository's clang 19 toolchain. Drivers that read private firmware or calibration at probe time are modules, so recovery can load them after the firmware mixin arrives; overclocking is not built. The kernel's s8003-j71t.dtb is the final device tree; m1n1 fills in memory, the framebuffer, the NVMe host memory buffer and the Wi-Fi MAC and calibration from the live ADT. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The kernel job runs once per device and the tools job builds a quiet loader per device, so a release carries one component bundle per device. J71b keeps j71b-components.tar.gz; kernel sources are now named kernel-source-<device>.tar.gz. Document the J71t support and its origin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The J71t patches are now 12 per-feature patches in git format-patch form, one per commit of the kernel branch https://github.com/brkosebay/linux/tree/a9/orchard-j71t (on 6831bc701a), all with the author's identity. They are the release 2 kernel of the omarchy-ipad5 port (https://github.com/brkosebay/omarchy-ipad5), which passed 13 of 13 device checks, and add two features: - 0009: native display. The ADBE KMS driver adopts the pipe and mode iBoot leaves running, replaces simpledrm during boot and names the panel eDP-1. apple_adbe_drm.enable=0 keeps simpledrm. - 0010: the VXD stateless H.264 decoder. Its CAVLC table is generated from the GPL-2.0 Imagination/TI source, included with its notices. It is built in, as in omarchy-ipad5 (it calls pr_flush, which modules cannot use), probes without firmware and loads vxd-deva.bin only when booted. The configuration adds CONFIG_DRM_APPLE_ADBE=y and CONFIG_VIDEO_APPLE_VXD=y and was resolved again with the toolchain image. The DTB pin changes because release 2 drops a board-specific charger input override; nothing else in the DTB differs except phandle numbering. NOTICE and the kernel READMEs now point at the public port and kernel branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
vxd-deva.bin is the DEVA image the VXD decoder boots. It ships inside the AppleD5500 kext of the pinned 20H350 kernelcache (record REL_812.0_14_Deva, 97,944 bytes); the CLI copies it out unchanged and this recipe pins its SHA-256. It lands in /lib/firmware/apple/ with the other mixin files. The recipe now has 20 entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
0013 is commit 0dd7ae0 on https://github.com/brkosebay/linux/tree/a9/orchard-j71t, a fast-forward of the branch the earlier patches come from; 0001-0012 are unchanged. It adds charger source detection: the Tristar power role reads the USB-C CC advertisement through Apple's USB-C to Lightning cable (3 A sources capped at the 2.4 A board maximum), keeps BC1.2 results across the cable's ID exchange and prefers an enumerated USB host; the D2365 charger recovers from the PMIC's attach default; bq27xxx reports Discharging on negative current at 100 %. Validated on an iPad 5 Wi-Fi (J71t) on 2026-10-27: computers (USB-A, and a Mac USB-C port through the USB-C to Lightning cable), a USB-C wall charger and a Mac USB-C power adapter charge at 2.4 A. The configuration and the DTB pin are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Update: J71t charging is validated; added as one new commit (nothing rewritten)
|
|
Thank you, Berkay. This PR is now integrated on the layered kernel stack, on Every kernel patch there keeps you as author, and its Charging (0013): BC1.2, the CC reading through the USB-C cable, the Apple host grant and the bq27xxx status fix are all in. The policy differs in one point: sources that identify nothing get 500 mA instead of 2.4 A (ledger 6.5–6.7). Next is your device test on the new stack; the doc has the setup and a staged plan. Once it passes, update this PR with the integration branch and your fixes, or open a new one, whichever you prefer. |
|
Thanks, Berkay! Closing this one, since its work moved on: the shared part is on main, and the iPad 5 part continues from feature/j71t-integration and your device test in #28. We'll bring your patches onto main from there, with you as author. |
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Apple's BCM4355 firmware answers the "p2p" iovar, so brcmfmac enables P2P, but it fails "p2p_da_override" with -52 and every P2P device creation fails at startup: brcmf_p2p_set_firmware: failed to update device address ret -52 brcmf_p2p_create_p2pdev: set p2p_disc error brcmf_cfg80211_add_iface: add iface p2p-dev-wld0 type 10 failed: err=-52 Add a table of features to disable per firmware ID, next to the existing override table, and list the iPad 5 and iPad 6 builds. Apple uses AWDL rather than Wi-Fi P2P. Signed-off-by: Berkay Kösebay <brkosebay@users.noreply.github.com> [Orchard: from OrchardLinux/orchard#6 0002 (J71t ledger 4.6), the feature.c part only, moved ahead of the iPad 5 as the J71b RAM test notes ask; adds the J71b FWID 01-d0cb7703 (iPadOS 17.7.11).] Signed-off-by: Dalton Alexandre <alley.nightly_0b@icloud.com>
Summary
This PR adds a second device, iPad 5 Wi-Fi J71t (
iPad6,11, A9 S8003, DFUCPID
0x8003, BDID0x10), beside J71b. J71b behaviour is unchanged.Device as a parameter. The runtime, recovery, launcher, component and
quiet-boot producers take a device/profile argument that defaults to
j71b.The device API in
runtime/j71b/is shared. It derives its profile from itsinstall directory (
/usr/libexec/orchard-<profile>) and keeps theper-device storage fence and J71b's touch-role firmware in small tables.
J71t device data.
devices/j71t/device.tomland afirmware.jsonrecipe(20 entries) against the public iPadOS 16.7.10 IPSW (the last line for
iPad 5):
brcmfmac's Apple board names).
BlueTool, SmartIO and the video-decoder firmware(
vxd-deva.bin) from the kernelcache, and the N1 touch packet fromJ71t.mtprops.come from the device's own ADT (
j71t-adtgenerator, in the CLI PR).J71t recovery and runtime.
boot/initramfs/j71t/recovery/holds init, the "J71t Recovery" USBidentity and boot arguments.
runtime/j71t/phase2-hardwarereleases the PCIe host and ANS that thekernel holds at boot, fences storage, then loads touch, Bluetooth and the
charger.
j71t-check-platformis the read-only check in the installed system.m1n1.
boot/m1n1/patches/j71t/adds two generic A9/A10 kboot patches:the NVMe host-memory-buffer region and Wi-Fi calibration from the
uart2/wlannode.Kernel.
kernel/patches/j71t/is 12 per-feature patches against thepinned
6831bc701a, ingit format-patchform. Each patch is one commit ofbrkosebay/linux
a9/orchard-j71t,so the source behind every patch is browsable. The series is the release 2
kernel of the omarchy-ipad5
port, which passed 13 of 13 device checks, minus the parts listed below.
eDP-1)kernel/configs/j71t/configwas resolved with this repository's clang-19toolchain image.
kernel/devicetree/j71t/builduses the kernel'ss8003-j71t.dtbwith a pinned SHA-256.CI. The kernel job builds a
devicematrix (j71b,j71t). The toolsjob builds a quiet loader per device, and assets packages
<device>-components.tar.gz.kernel-source-<device>.tar.gz,so J71b's was renamed from
kernel-source.tar.gz. This is the oneJ71b-visible change.
reuse_run_idcannot reusehardware-toolsartifacts from runs beforethe per-device layout.
Why these choices
nvme.write_window=NSID:FIRST-LAST. Only Write commands in that range reachthe controller (no trim, Write Zeroes, Format, Sanitize, firmware or
namespace commands), and namespaces 2–7 stay read-only regardless.
and uses the same block-layer fence as J71b: phase 2 sets every
nvme0n1p*read-only, and the device API makes only the confirmed targetwritable.
narrower one keeps a kernel-level fence.
an ANS re-probe that has not been validated yet; happy to discuss.
the J71t charger, for example, silently disables charging writes if its
calibration is missing at probe. So the drivers that read private data at
probe are modules, loaded by phase 2 or by the installed system's udev. Wi-Fi
is built in but probes only after phase 2 releases the PCIe host. The video
decoder is built in (it calls
pr_flush, which modules cannot use) butprobes without firmware; it loads its firmware only when booted through
debugfs.
simpledrm during boot. It only adopts the mode and pipe iBoot leaves running
(no timings, clocks or link training).
apple_adbe_drm.enable=0keepssimpledrm.
leaves out:
needs a release step from the port's own initramfs, and its firmware and
calibration need extractors the CLI does not have yet. A follow-up.
CPU idle experiments, driver-core tracing, kdump pstore, the display probe
module).
code. A fix for wall and USB-C chargers is in progress; it will follow as a
separate commit on this PR, changing only patch 0006, after it passes on the
device.
GPL-2.0 Imagination Technologies/Texas Instruments
h264_vlc.h, which isincluded with its notices and the generator. Its firmware is not in the
kernel; Orchard extracts it from the IPSW kernelcache and pins its SHA-256.
runtime and recovery tools to neutral names in a follow-up if you prefer.
names and needs a J71t Minimal Linux root, so
device.tomlhas nolaunch_manifest, andorchard launchsays none is published.Testing done
python -m unittest discover -s tests: 65 tests OK on Python3.12 and 3.9 (52 before). The new tests are
test_j71t_data.pyandtest_device_profiles.py.runtime.files()output for J71b compared withmain:same file set, paths and modes. Only the three edited shared runtime sources
and the derived hash list differ.
boot/quiet/m1n1.patchapply to d5a10ac52aand compile.
git applyin order to6831bc701a, thepatches give exactly the tree of
a9/orchard-j71t(tree hash checked).kernel/build j71t --resume, unmodified, in thisrepository's Containerfile image (Debian bookworm, clang 19.1.7), native
mode on a Docker host (no Podman). The source was the pinned commit from a
local mirror, not fetched from GitHub, and a parallel prebuild with the same
flags ran first.
olddefconfigis byte-stable.Image.gz11.2 MB,kernel.release7.3.0-rc1-orchard-j71t.stage-modules.pystaged 165 modules and ran depmod. Everymodule that phase 2 or udev loads is present; the display and video
drivers are built in.
kernel/devicetree/j71t/buildaccepted the DTB (pinned SHA-256 matches).runtime.files(..., 'j71t')over the staged modules, with the Omarchy AJ71t image policy, produced the expected runtime.
port's GPU research code were searched in the Image and all modules:
0 matches.
ADT tunable tables, two trailing statements in the audio codec).
13 of 13 device checks on one iPad6,11 J71t (iPadOS 16.7.10), booted through
that port's own path, among them: USB gadget, NVMe root with a kernel write
fence, Wi-Fi, Bluetooth, touch, sound devices, battery and charging from a
computer at up to 2.4 A, light sensor and brightness, and the native
display's brightness slider (accelerometer and auto-rotate also passed but
are not in this PR). The previous release, with the same audio and decoder
drivers, verified stereo playback, microphone capture and bit-exact H.264
decoding of a test stream.
Not tested
install and handoff have not yet run on a J71t.
whole-namespace window with block-layer fencing are new for this device.
apple,fearaimage fallback and per-moduleNVRAM names are checked against the driver source. Our unit loaded the more
specific
-XXnames.this kernel: the input stays at the 500 mA floor and the battery drains with
the screen on. Computers charge at up to 2.4 A.
and N1 hashes were reproduced from the same build's files.
How to test
python -m build, install the wheel, then runpython -m unittest discover -s tests.kernel/build j71t --output out/kernel/j71t(Podman, or native as in CI).boot/m1n1/build j71t --output out/m1n1.bin.orchard devices(expect CPID0x8003, BDID0x10). Then boot a J71t recovery and runorchard prepare. Phase 2 mustreport wifi, storage-fence, touch, bluetooth, charging-policy and
hardware-ready, with every
nvme0n1p*ro=1. The panel should beeDP-1under
/sys/class/drm.Credits
T8010 PCIe/ANS, SmartIO, SIO DMA, D2365 charger, Wi-Fi and Bluetooth work,
which includes code by Corellium LLC.
table source.
runtime, recovery, mixin and fencing model.
🤖 Generated with Claude Code