Skip to content

Add iPad 5 Wi-Fi (J71t) hardware support - #6

Closed
brkosebay wants to merge 8 commits into
OrchardLinux:mainfrom
brkosebay:j71t-support
Closed

brkosebay wants to merge 8 commits into
OrchardLinux:mainfrom
brkosebay:j71t-support

Conversation

@brkosebay

@brkosebay brkosebay commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

iPad 5 (J71t) port: three PRs, in release order

  1. Add iPad 5 Wi-Fi (J71t) hardware support #6: kernel series, device data, firmware recipe, recovery and runtime
  2. Add the iPad 5 Wi-Fi (J71t) adapter and multi-adapter discovery cli#2: J71t adapter and multi-adapter discovery
  3. Build Omarchy A for iPad 5 Wi-Fi (J71t) beside J71b omarchy-a#4: J71t image and release

Kernel source: brkosebay/linux a9/orchard-j71t · Project: brkosebay/omarchy-ipad5

Summary

This PR adds a second device, iPad 5 Wi-Fi J71t (iPad6,11, A9 S8003, DFU
CPID 0x8003, BDID 0x10), 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 its
    install directory (/usr/libexec/orchard-<profile>) and keeps the
    per-device storage fence and J71b's touch-role firmware in small tables.

  • J71t device data. devices/j71t/device.toml and a firmware.json recipe
    (20 entries) against the public iPadOS 16.7.10 IPSW (the last line for
    iPad 5):

    • BCM4355 C0 "feara" Wi-Fi (one image plus all nine NVRAM variants under
      brcmfmac's Apple board names).
    • Bluetooth patchram from BlueTool, SmartIO and the video-decoder firmware
      (vxd-deva.bin) from the kernelcache, and the N1 touch packet from
      J71t.mtprops.
    • Touch, ambient-light and charger calibration and the Bluetooth address
      come from the device's own ADT (j71t-adt generator, in the CLI PR).
    • The Wi-Fi MAC and calibration go through m1n1, as on J71b.
  • J71t recovery and runtime.

    • boot/initramfs/j71t/recovery/ holds init, the "J71t Recovery" USB
      identity and boot arguments.
    • runtime/j71t/phase2-hardware releases the PCIe host and ANS that the
      kernel holds at boot, fences storage, then loads touch, Bluetooth and the
      charger.
    • j71t-check-platform is 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/wlan node.

  • Kernel. kernel/patches/j71t/ is 12 per-feature patches against the
    pinned 6831bc701a, in git format-patch form. Each patch is one commit of
    brkosebay/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.

    Patch Contents
    0001 S8003 PCIe host, ANS NVMe with a boot-time write window, DART, PMGR states, watchdog
    0002 BCM4355 Wi-Fi (brcmfmac) and Bluetooth over the Samsung UART
    0003 SmartIO, SIO DMA, S8000 SPI
    0004 N1 touchscreen
    0005 CS42L81 codec and S8000 MCA audio
    0006 D2365 PMIC GPIO, charger with source detection, Lightning power role, bq27540 gauge, thermal, CPU frequency
    0007 DWC2 gadget, Lightning host role, USB PHY
    0008 CT819 light sensor, pinctrl, DWI backlight
    0009 Native display: ADBE KMS on the pipe iBoot leaves running (panel eDP-1)
    0010 VXD stateless H.264 decoder
    0011 S8003 and J71t device trees
    0012 MAINTAINERS

    kernel/configs/j71t/config was resolved with this repository's clang-19
    toolchain image. kernel/devicetree/j71t/build uses the kernel's
    s8003-j71t.dtb with a pinned SHA-256.

  • CI. The kernel job builds a device matrix (j71b, j71t). The tools
    job builds a quiet loader per device, and assets packages
    <device>-components.tar.gz.

    • J71b's bundle name is unchanged.
    • The published kernel source archive is now kernel-source-<device>.tar.gz,
      so J71b's was renamed from kernel-source.tar.gz. This is the one
      J71b-visible change.
    • reuse_run_id cannot reuse hardware-tools artifacts from runs before
      the per-device layout.

Why these choices

  • Storage. The J71t NVMe driver stays read-only except for a boot-time
    nvme.write_window=NSID:FIRST-LAST. Only Write commands in that range reach
    the controller (no trim, Write Zeroes, Format, Sanitize, firmware or
    namespace commands), and namespaces 2–7 stay read-only regardless.
    • Orchard picks the target after boot, so recovery opens all of namespace 1
      and uses the same block-layer fence as J71b: phase 2 sets every
      nvme0n1p* read-only, and the device API makes only the confirmed target
      writable.
    • The runtime accepts any namespace-1 window, so a recovery built with a
      narrower one keeps a kernel-level fence.
    • Reloading NVMe with the chosen target's window would be stricter. It needs
      an ANS re-probe that has not been validated yet; happy to discuss.
  • Late private firmware. Orchard delivers private firmware after boot, and
    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) but
    probes without firmware; it loads its firmware only when booted through
    debugfs.
  • Display. The ADBE driver is built in and takes the framebuffer over from
    simpledrm during boot. It only adopts the mode and pipe iBoot leaves running
    (no timings, clocks or link training). apple_adbe_drm.enable=0 keeps
    simpledrm.
  • Kernel series scope. Only device-validated code is ported. The series
    leaves out:
    • GPU research code (it embeds captured Apple programs).
    • SEP and the Touch ID sensor transport (experimental).
    • The AOP accelerometer driver: it can only be built in, its cold start
      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.
    • Diagnostics-only and kexec-only code (boot watchdog, DVFS observer,
      CPU idle experiments, driver-core tracing, kdump pstore, the display probe
      module).
    • Opt-in overclocking, which is compiled out by the config.
  • Charging. The power patch is the device-validated release 2 charger
    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.
  • Video decoder provenance. The decoder's CAVLC table is generated from the
    GPL-2.0 Imagination Technologies/Texas Instruments h264_vlc.h, which is
    included 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.
  • Shared J71b directories keep the diff small. I can move the shared
    runtime and recovery tools to neutral names in a follow-up if you prefer.
  • No J71t shared launcher yet. The launcher publishes device-agnostic asset
    names and needs a J71t Minimal Linux root, so device.toml has no
    launch_manifest, and orchard launch says none is published.

Testing done

  • Unit tests. python -m unittest discover -s tests: 65 tests OK on Python
    3.12 and 3.9 (52 before). The new tests are test_j71t_data.py and
    test_device_profiles.py.
  • J71b output. runtime.files() output for J71b compared with main:
    same file set, paths and modes. Only the three edited shared runtime sources
    and the derived hash list differ.
  • m1n1. The J71t patches plus boot/quiet/m1n1.patch apply to d5a10ac52a
    and compile.
  • Kernel series. Applied with git apply in order to 6831bc701a, the
    patches give exactly the tree of a9/orchard-j71t (tree hash checked).
  • Kernel build. kernel/build j71t --resume, unmodified, in this
    repository'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.
    • olddefconfig is byte-stable.
    • Image.gz 11.2 MB, kernel.release 7.3.0-rc1-orchard-j71t.
    • stage-modules.py staged 165 modules and ran depmod. Every
      module that phase 2 or udev loads is present; the display and video
      drivers are built in.
    • kernel/devicetree/j71t/build accepted the DTB (pinned SHA-256 matches).
    • runtime.files(..., 'j71t') over the staged modules, with the Omarchy A
      J71t image policy, produced the expected runtime.
  • No captured GPU programs in the binaries. The 75 numeric arrays of the
    port's GPU research code were searched in the Image and all modules:
    0 matches.
  • checkpatch.pl reports only style errors (DTS alignment indents in the
    ADT tunable tables, two trailing statements in the audio codec).
  • Device. The same kernel (release 2 of the omarchy-ipad5 port) passed
    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

  • Orchard flow on a J71t. The Orchard recovery boot, mixin, phase 2,
    install and handoff have not yet run on a J71t.
  • Phase 2 ordering (PCIe/ANS release, module loading) and the
    whole-namespace window with block-layer fencing are new for this device.
  • Wi-Fi file layout. brcmfmac's apple,feara image fallback and per-module
    NVRAM names are checked against the driver source. Our unit loaded the more
    specific -XX names.
  • Charging from wall and USB-C chargers. They do not charge correctly with
    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.
  • IPSW. No full IPSW download/extraction run. Pinned SmartIO, DEVA, HCD
    and N1 hashes were reproduced from the same build's files.

How to test

  1. python -m build, install the wheel, then run
    python -m unittest discover -s tests.
  2. kernel/build j71t --output out/kernel/j71t (Podman, or native as in CI).
    boot/m1n1/build j71t --output out/m1n1.bin.
  3. Device test, in DFU: orchard devices (expect CPID 0x8003, BDID
    0x10). Then boot a J71t recovery and run orchard prepare. Phase 2 must
    report wifi, storage-fence, touch, bluetooth, charging-policy and
    hardware-ready, with every nvme0n1p* ro=1. The panel should be eDP-1
    under /sys/class/drm.

Credits

  • Pauli1Go. The A9 work builds on Paul Praschl's (Pauli1Go) HoolockLinux
    T8010 PCIe/ANS, SmartIO, SIO DMA, D2365 charger, Wi-Fi and Bluetooth work,
    which includes code by Corellium LLC.
  • Imagination Technologies and Texas Instruments for the GPL-2.0 decoder
    table source.
  • HoolockLinux. The kernel and m1n1 bases are HoolockLinux's.
  • Orchard's J71b port is the reference design this follows: the device
    runtime, recovery, mixin and fencing model.

🤖 Generated with Claude Code

brkosebay and others added 7 commits October 27, 2026 16:34
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>
@brkosebay

Copy link
Copy Markdown
Contributor Author

Update: J71t charging is validated; added as one new commit (nothing rewritten)

  • New patch kernel/patches/j71t/0013-j71t-charging-sources.patch. It is the new commit 0dd7ae0 on a9/orchard-j71t, which fast-forwards from 4dfc90d. Patches 0001–0012 are unchanged.

  • What it changes (8 files: Apple power drivers, bq27xxx, the USB gadget core's current notifier, ABI docs):

    • The Tristar power role reads the USB-C CC advertisement through Apple's USB-C to Lightning cable, capping 3 A sources at the 2.4 A board maximum. It keeps BC1.2 results across the cable's ID exchange and prefers an enumerated USB host over an early BC1.2 reading.
    • The D2365 charger restores its policy limit after the PMIC's attach default instead of treating it as a weak source.
    • bq27xxx reports Discharging on negative current, also at 100 %.
  • Validated on an iPad 5 Wi-Fi (J71t) on 2026-10-27, using the same charger code through the omarchy-ipad5 port's boot path:

    • computers over USB-A, and a Mac USB-C port through Apple's USB-C to Lightning cable;
    • a USB-C wall charger;
    • a Mac USB-C power adapter.

    All of them charge at 2.4 A, and the battery no longer drains on wall chargers. Charging is 5 V only: the iPad 5 has no USB Power Delivery.

  • Config and DTB pin are unchanged. Rebuilt with the unmodified kernel/build j71t: olddefconfig is byte-stable, 165 modules are staged, and the DTB pin matches. Unit tests: 65 OK.

  • Still not run: the Orchard recovery/install flow on a J71t.

@henrikklee

Copy link
Copy Markdown
Contributor

Thank you, Berkay. This PR is now integrated on the layered kernel stack, on feature/j71t-integration. Your branch hasn't been touched.

Every kernel patch there keeps you as author, and its [Orchard: …] note names your original commits (a9/orchard-j71t, the granular a9/* branches, omarchy-ipad5 rounds) and an item in docs/integration/j71t.md. That document's ledger goes through this PR topic by topic: what was taken as is, what was reworked to fit the shared drivers, and what stays in your research tree (kexec paths, diagnostics). It explains why for each. Several of your findings apply beyond the iPad 5: the DART table format, NVMMU ordering, the shared-MSI completions, the SIO tags, the SPI CS delay fix and BC1.2.

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.

@henrikklee

Copy link
Copy Markdown
Contributor

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.

@henrikklee henrikklee closed this Oct 29, 2026
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 1, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 2, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 2, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 4, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 6, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 6, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 6, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 7, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 9, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 9, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 9, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 9, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 9, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 10, 2026
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>
henrikklee pushed a commit to OrchardLinux/linux that referenced this pull request Nov 11, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants