Skip to content

Add read-only Acer A315-56 extended EC module - #95

Draft
celsonaemen wants to merge 1 commit into
namazso:mainfrom
celsonaemen:feature/acer-a315-56-ec-read
Draft

Add read-only Acer A315-56 extended EC module#95
celsonaemen wants to merge 1 commit into
namazso:mainfrom
celsonaemen:feature/acer-a315-56-ec-read

Conversation

@celsonaemen

Copy link
Copy Markdown

Summary

Adds a model-specific, read-only semantic backend for the extended embedded-controller mailbox exposed by the Acer Aspire A315-56 ACPI firmware.

The module exposes one IOCTL that implements the semantic equivalent of EC0.FANG(index). Although the caller operation is a read, the firmware protocol necessarily writes the index and command fields before returning ERN1.

Hardware and firmware gate

Validated target:

  • Acer Aspire A315-56
  • mainboard Sleepy_IL
  • Insyde BIOS V1.27
  • Intel Core i3-1005G1, family 6/model 0x7E
  • Intel LPC/eSPI PCI ID 8086:3482

The module refuses to load unless the CPU architecture/vendor/family/model and exact LPC vendor/device ID match.

Firmware reference

The transaction was derived from the decompiled DSDT path EC0.FANG -> EIDR/ERRD -> ERCD:

  • ERIB: 0xFE0B0800 + 0x05D
  • ECTB/ECTE: 0xFE0B0800 + 0x582
  • ERN1: 0xFE0B0800 + 0x583
  • ECMD: 0xFE0B0800 + 0x58B
  • EDT1/EDT2: 0xFE0B0800 + 0x58C/0x58D
  • extended-read command: ECMD 0xB0, EDT1 0x5F, EDT2 0

A sanitized hardware map and the reverse-engineering notes are available at:
https://github.com/celsonaemen/acer-a315-56-control/blob/main/docs/HARDWARE-MAP.md

Safety properties

  • no arbitrary MMIO, EC, or fan-value write IOCTL
  • one fixed 4 KiB MMIO mapping
  • rejects an out-of-range 16-bit index
  • returns STATUS_DEVICE_BUSY when ECTB or ECTE is already set
  • documents the Access_EC user-mode mutant requirement
  • one-second bounded poll with STATUS_IO_TIMEOUT
  • best-effort ECTB cleanup on every post-acquisition exit
  • LGPL-2.1-or-later with Doxygen documentation

Validation

  • compiled with bundled Pawn 4.1.7152 and the repository CI flags
  • all 23 top-level modules compiled successfully with no warnings
  • git diff --check passed
  • the unsigned module has not been loaded on the restricted production driver

The main review request is the ACPI/Acpi.sys concurrency model around the firmware mailbox and whether the hardware gate is sufficiently specific for an official signed build.

@namazso
namazso marked this pull request as draft August 30, 2026 00:23
@namazso

namazso commented Aug 30, 2026

Copy link
Copy Markdown
Owner

I changed this to draft, please test it before marking it as ready.

@celsonaemen

Copy link
Copy Markdown
Author

A causa ficou fechada: dentro do CAB há quatro slots esperados (ARM64 normal/unrestricted e x64 normal/unrestricted), mas o quarto slot repete
exatamente o ARM64 unrestricted. O x64 normal existe; o x64 unrestricted não foi empacotado.

but i gona test it keep calm pls

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